From fc79584958a7cb9bfbb9658132e42c7578729d5c Mon Sep 17 00:00:00 2001 From: Michael Wiebusch Date: Tue, 8 Oct 2013 19:55:22 +0200 Subject: [PATCH] why does it not work anymore ... --- firmware/USBtoSerial.elf | Bin 149039 -> 149695 bytes firmware/USBtoSerial.hex | 606 +++--- firmware/USBtoSerial.lss | 3932 ++++++++++++++++++-------------------- firmware/USBtoSerial.map | 735 +++---- firmware/USBtoSerial.sym | 135 +- 5 files changed, 2651 insertions(+), 2757 deletions(-) diff --git a/firmware/USBtoSerial.elf b/firmware/USBtoSerial.elf index ed987edf4f1c5b3cf08a8570da458fe7539f75cf..c6a30e93a84f0efdb03638101c675df58066e78b 100755 GIT binary patch delta 43178 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 delta 43284 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 D-{A}J diff --git a/firmware/USBtoSerial.hex b/firmware/USBtoSerial.hex index 862c8b3..82084c9 100644 --- a/firmware/USBtoSerial.hex +++ b/firmware/USBtoSerial.hex @@ -1,7 +1,7 @@ :100000009AC00000B4C00000B2C00000B0C0000040 :10001000AEC00000ACC00000AAC00000A8C0000034 -:10002000A6C00000A4C00000A2C0000073C600006B -:1000300015C700009CC000009AC0000098C00000D6 +:10002000A6C00000A4C00000A2C0000079C6000065 +:100030009EC000009CC000009AC0000098C0000054 :1000400096C0000094C0000092C0000090C0000064 :100050008EC00000D6C000008AC00000D8C20000D8 :1000600086C0000084C0000082C0000080C0000084 @@ -18,9 +18,9 @@ :1001100020005500530042002D00520053003200D1 :100120003300320020004100640061007000740060 :1001300065007200000011241FBECFEFD4E0DEBFC7 -:10014000CDBF11E0A0E0B1E0E8E5F8E102C0059024 +:10014000CDBF11E0A0E0B1E0EAEFF7E102C0059019 :100150000D92A236B107D9F712E0A2E6B1E001C0D4 -:100160001D92A639B107E1F75FD30C942A0C48CF52 +:100160001D92A739B107E1F75DD30C94FB0B48CF83 :10017000FC01A081B1816C93808191810196918372 :100180008083268137818217930721F484819581AA :10019000918380832FB7F894828593850196938706 @@ -35,36 +35,36 @@ :100220001F90189586B53091880220E0280F311D67 :10023000C901089516BC109288020895DF92EF92CA :10024000FF920F931F93CF93DF9383E085BDF2DF7F -:10025000509A5898E7DFBC0180E090E00E94520B72 -:1002600020E030E84EE053E40E94BA0A87FDF2CF66 +:10025000509A5898E7DFBC0180E090E00E94230BA1 +:1002600020E030E84EE053E40E948B0A87FDF2CF95 :1002700082E085BDDD24D39410E0DCDF509A5898ED -:10028000D1DFBC0180E090E00E94520B20E030E022 -:100290004CE852E40E94BA0A87FDF2CF5098589A6F -:1002A000C1DFBC0180E090E00E94520B20E030E012 -:1002B00048E453E40E94BA0A87FDF2CF41C0C8E087 +:10028000D1DFBC0180E090E00E94230B20E030E051 +:100290004CE852E40E948B0A87FDF2CF5098589A9E +:1002A000C1DFBC0180E090E00E94230B20E030E041 +:1002B00048E453E40E948B0A87FDF2CF41C0C8E0B6 :1002C000D0E000E8E12EFF248FE792E0E80EF91E6F :1002D000B1DF509A5898F7018081802379F0A2DF2E -:1002E000BC0180E090E00E94520B20E030E04CE83E -:1002F00052E40E94BA0A87FDF2CF0EC093DFBC0120 -:1003000080E090E00E94520B20E030E042E053E4B5 -:100310000E94BA0A87FDF2CF5098589A83DFBC0139 -:1003200080E090E00E94520B20E030E048E453E48B -:100330000E94BA0A87FDF2CF0695219749F61F5F02 +:1002E000BC0180E090E00E94230B20E030E04CE86D +:1002F00052E40E948B0A87FDF2CF0EC093DFBC014F +:1003000080E090E00E94230B20E030E042E053E4E4 +:100310000E948B0A87FDF2CF5098589A83DFBC0168 +:1003200080E090E00E94230B20E030E048E453E4BA +:100330000E948B0A87FDF2CF0695219749F61F5F31 :100340001D1508F4BCCF76DF509A58986BDFBC01BE -:1003500080E090E00E94520B20E030E042E053E465 -:100360000E94BA0A87FDF2CF5098589A5BDFBC0111 -:1003700080E090E00E94520B20E030E048E453E43B -:100380000E94BA0A87FDF2CF80917F028B3329F059 +:1003500080E090E00E94230B20E030E042E053E494 +:100360000E948B0A87FDF2CF5098589A5BDFBC0140 +:1003700080E090E00E94230B20E030E048E453E46A +:100380000E948B0A87FDF2CF80917F028B3329F088 :10039000893341F429E0D22E02C093E0D92E1130E6 :1003A00009F46BCF47DF3EDFBC0180E090E00E94A4 -:1003B000520B20E030E04AEF53E40E94040C181680 +:1003B000230B20E030E04AEF53E40E94D50B1816DF :1003C0000CF442C04899EFCF489BFECFC0E8D2E082 :1003D00011E001C0182F188288E0E82EF12C00E807 -:1003E00029DF20DFBC0180E090E00E94520B20E07A -:1003F00030E048E453E40E94040C181614F4115041 +:1003E00029DF20DFBC0180E090E00E94230B20E0A9 +:1003F00030E048E453E40E94D50B181614F4115071 :1004000024C04899EECF16DF489BFECF0BDFBC011E -:1004100080E090E00E94520B20E030E048EC52E493 -:100420000E94BA0A87FF03C08881800F88830695DF +:1004100080E090E00E94230B20E030E048EC52E4C2 +:100420000E948B0A87FF03C08881800F888306950E :100430000894E108F108E114F10491F6812F8F5F2F :100440002196893039F601C010E0812FDF91CF91DC :100450001F910F91FF90EF90DF9008955098589A58 @@ -82,19 +82,19 @@ :1005100004C081958F73819508958F73089580E04D :1005200008951F938FB7F89420916C0130916D015D :100530008FBF80916A0190916B012817390749F0AC -:1005400085E491E084D7BC0197FD03C082E691E089 +:1005400085E491E054D7BC0197FD03C082E691E0B9 :100550000FDE2FB7F8948091F8019091F9012FBF29 :10056000009701F1209146012F702093E90020911E :10057000E80020FF17C08031910510F08FE090E077 :10058000182F0EC0E091F001F091F10185E491E0A7 -:100590006081ECD61150882329F48EEE91E003DEC1 +:100590006081B9D61150882329F48EEE91E003DEF4 :1005A000112381F72FB7F89480916C0190916D0120 :1005B0002FBF009749F082E691E0F5DD9091C800E9 -:1005C00095FFFCCF8093CE0085E491E029D7E3D559 +:1005C00095FFFCCF8093CE0085E491E0F8D6AED5C0 :1005D0001F91089584B7877F84BF88E10FB6F89490 :1005E00080936000109260000FBE90E080E80FB62C -:1005F000F89480936100909361000FBE7CC30895CE -:10060000089585E491E08EC685E491E0DFC51F92F0 +:1005F000F89480936100909361000FBE82C30895C8 +:10060000089585E491E05BC685E491E0ABC51F9257 :100610000F920FB60F9211242F933F934F935F9336 :100620006F937F938F939F93AF93BF93EF93FF93BA :100630006091CE008EB3843019F48EEE91E098DD97 @@ -106,10 +106,10 @@ :100690001860828D873031F0883031F0863029F44F :1006A000126003C0146001C016601092C90010925D :1006B000C8001092CA00C488D588E688F788C701A8 -:1006C000B6019695879577956795ECD720E034E24B -:1006D00044EF59E4EBD64B015C01C701B601E2D708 -:1006E0009B01AC01C501B40149D720E030E040E8EE -:1006F0005FE3DBD6ABD77093CD006093CC00109353 +:1006C000B6019695879577956795BDD720E034E27A +:1006D00044EF59E4BCD64B015C01C701B601B3D766 +:1006E0009B01AC01C501B4011AD720E030E040E81D +:1006F0005FE3ACD67CD77093CD006093CC001093B1 :10070000CA0082E08093C80088E98093C9001F91E5 :10071000FF90EF90DF90CF90BF90AF909F908F9021 :100720000895682F8EB3843019F48EEE91E020CDB9 @@ -121,278 +121,272 @@ :10078000822F90E0FA01E80FF91F1082D22EDA943E :100790004D2C552447FC5094EA01C40DD51DAA24C4 :1007A000BB24BAE06B2E712C812C912C1C01089477 -:1007B00021083108A0E2CA2E22C0E114F10401058B +:1007B00021083108A0E2CA2E20C0E114F10401058D :1007C000110541F4C501840D951D8215930514F49E -:1007D000C88208C0C801B701A40193010E94080C97 -:1007E000605D6883C801B701A40193010E94080CF1 -:1007F00079018A01DA9421970894A108B108D7FEFB -:10080000DCCFDF91CF911F910F91FF90EF90DF90A0 -:10081000CF90BF90AF909F908F907F906F905F90A0 -:100820004F903F902F900895CF92DF92EF92FF92DA -:100830000F931F93DF93CF93CDB7DEB760970FB6BB -:10084000F894DEBF0FBECDBFC5DE82E691E06EE656 -:1008500071E0C2DC8EEE91E06AEF71E0BDDC78946D -:10086000FDDD8FEF99E6A8E181509040A040E1F7CF -:1008700000C00000789403DE02DE80E091E059DFE2 -:100880001CDEDD248E010F5F1F4FEE24FF2449DEA6 -:100890000894E11CF11C90EDE91697E0F906B9F710 -:1008A000E5DD2FDEE82E1DDE2E2D332727FD3095CA -:1008B0002C0D311D2F3F310509F024F437FD05C003 -:1008C000CE0C04C0CC24CA9401C0CC24282F3327DA -:1008D00027FD30952D0D311D2F3F310509F024F4F2 -:1008E00037FD05C0D80E04C0DD24DA9401C0DD2434 -:1008F00081E391E01EDF6C2D70E080E090E0A801C4 -:1009000024E02ADFC80115DF89E391E012DF6D2DB5 -:1009100070E080E090E0A80124E01EDFC80109DF5C -:1009200083E491E006DFB1CF923029F0933041F0BB -:100930009130E9F417C02EE330E0EAEAF0E01BC0A2 -:10094000813041F0813018F0823089F406C0E8EE41 -:10095000F0E005C0ECEEF0E002C0E6E0F1E024914A -:1009600030E009C022E130E0E8E9F0E004C020E036 -:1009700030E0E0E0F0E0DA011196FC93EE93C9017B -:100980000895282F392FF9018091940290919502B2 -:100990008617970718F4BC0120E034C06115710573 -:1009A000D9F78091E8008E778093E800F5CF8EB379 -:1009B0008823E9F18530B9F18091E80083FD35C0E5 -:1009C0008091E80082FD29C08091E80080FF1AC074 -:1009D0008091F20090E006C021912093F1006150D7 -:1009E000704001966115710519F088309105A0F3EA -:1009F00021E08830910509F020E08091E8008E77B1 -:100A00008093E8006115710591F6222381F605C0F7 -:100A10008EB3882361F0853061F08091E80082FF19 -:100A2000F7CF80E0089583E0089581E0089582E0A3 -:100A3000089583E00895E82FF92F80919402909112 -:100A400095028617970718F4BC0120E036C061159F +:1007D000C88207C0C801B701A4019301EAD7605DD0 +:1007E0006883C801B701A4019301E3D779018A01A5 +:1007F000DA9421970894A108B108D7FEDECFDF91E3 +:10080000CF911F910F91FF90EF90DF90CF90BF900D +:10081000AF909F908F907F906F905F904F903F90A0 +:100820002F900895CF92DF92EF92FF920F931F9334 +:10083000DF93CF93CDB7DEB760970FB6F894DEBFE6 +:100840000FBECDBFC7DE82E691E06EE671E0C4DC8C +:100850008EEE91E06AEF71E0BFDC7894FFDD8FEF00 +:1008600099E6A8E181509040A040E1F700C0000067 +:10087000789405DE04DE80E091E05BDF1EDEDD249F +:100880008E010F5F1F4FEE24FF244BDE0894E11C06 +:10089000F11C90EDE91697E0F906B9F7E7DD31DED6 +:1008A000E82E1FDE2E2D332727FD30952C0D311D10 +:1008B0002F3F310509F024F437FD05C0CE0C04C0EC +:1008C000CC24CA9401C0CC24282F332727FD30958F +:1008D0002D0D311D2F3F310509F024F437FD05C0E2 +:1008E000D80E04C0DD24DA9401C0DD2481E391E058 +:1008F00020DF6C2D70E080E090E0A80124E02CDF88 +:10090000C80117DF89E391E014DF6D2D70E080E00E +:1009100090E0A80124E020DFC8010BDF83E491E030 +:1009200008DFB1CF923029F0933041F09130E9F4F3 +:1009300017C02EE330E0EAEAF0E01BC0813041F05E +:10094000813018F0823089F406C0E8EEF0E005C08E +:10095000ECEEF0E002C0E6E0F1E0249130E009C006 +:1009600022E130E0E8E9F0E004C020E030E0E0E03F +:10097000F0E0DA011196FC93EE93C9010895282F57 +:10098000392FF90180919502909196028617970769 +:1009900018F4BC0120E035C061157105D9F78091CC +:1009A000E8008E778093E800F5CF80918E0288234F +:1009B000F1F18530C1F18091E80083FD36C080916E +:1009C000E80082FD2AC08091E80080FF1AC0809173 +:1009D000F20090E006C021912093F1006150704038 +:1009E00001966115710519F088309105A0F321E099 +:1009F0008830910509F020E08091E8008E7780939F +:100A0000E8006115710589F6222379F606C0809108 +:100A10008E02882361F0853061F08091E80082FFCA +:100A2000F6CF80E0089583E0089581E0089582E0A4 +:100A3000089583E00895E82FF92F80919502909111 +:100A400096028617970718F4BC0120E037C061159D :100A50007105D9F78091E8008E778093E800F5CF93 -:100A60008EB3882309F43EC08530C1F18091E8003F -:100A700083FD36C08091E80082FD2AC08091E800A5 -:100A800080FF1BC08091F20090E007C0249120936A -:100A9000F10031966150704001966115710519F0B1 -:100AA0008830910598F321E08830910509F020E025 -:100AB0008091E8008E778093E8006115710581F6DA -:100AC000222371F605C08EB3882361F0853061F072 -:100AD0008091E80082FFF7CF80E0089583E00895D9 -:100AE00081E0089582E0089583E00895982F2CC056 -:100AF000292F2F702093E900981739F07091EC009E -:100B00002091ED005091F00003C0242F762F50E08B -:100B100021FF19C03091EB003E7F3093EB00309104 -:100B2000ED003D7F3093ED003091EB00316030936C -:100B3000EB007093EC002093ED005093F0002091B7 -:100B4000EE0027FF08C09F5F953090F28F70809372 -:100B5000E90081E0089580E00895EF92FF920F93FD -:100B60001F93CF93DF93162FE82EE7017E01F92E16 -:100B7000E70100E02AC09881992329F16B81E9817E -:100B8000FA812C81892F8F70853018F56295660F58 -:100B9000660F607C991F9927991F692B223010F0EE -:100BA00096E001C092E028E030E040E003C04F5FF3 -:100BB000220F331F2E173F07D0F34295407F492B5A -:100BC00095DF882331F00F5F25960117A0F281E0B1 -:100BD00001C080E0DF91CF911F910F91FF90EF90C6 -:100BE000089580918E0287FF11C003C08EB38823C1 -:100BF000B1F08091E80082FFF9CF8091E8008B7717 -:100C00008093E80008958EB3882349F08091E8002E -:100C100080FFF9CF8091E8008E778093E8000895F7 -:100C20008091E4009091E50044E62091EC0020FFE3 -:100C300025C02091E80020FD15C02EB32223A1F08D -:100C40002530A1F02091EB0025FD12C02091E40099 -:100C50003091E5002817390741F3442359F04150FA -:100C6000C901E3CF80E0089582E0089583E008950C -:100C700081E0089584E0089580E008952091E800DF -:100C800022FFDBCFF9CF40D042D08091D8008F77C0 -:100C90008093D8008091D80080688093D80080919C -:100CA000D8008F7D8093D80084E089BD86E089BD1F -:100CB00009B400FEFDCF1EBA10928A0210928C0277 -:100CC00010928B0280E060E042E010DF8091E10052 -:100CD0008E7F8093E1008091E20081608093E2004A -:100CE0008091E20088608093E2008091E0008E7F36 -:100CF0008093E0000895E3E6F0E080818E7F8083BA -:100D000081E080938D02BFCF1092E200089510928F -:100D1000E10008951F920F920FB60F9211242F93A6 -:100D20003F934F935F936F937F938F939F93AF9373 -:100D3000BF93EF93FF938091E10082FF0AC08091FF -:100D4000E20082FF06C08091E1008B7F8093E1008A -:100D500021D28091E10080FF16C08091E20080FFE7 -:100D600012C08091E2008E7F8093E2008091E200C9 -:100D700080618093E2008091D80080628093D800E7 -:100D800019BC1EBA3DDC8091E10084FF2CC080912B -:100D9000E20084FF28C084E089BD86E089BD09B4F3 -:100DA00000FEFDCF8091D8008F7D8093D800809188 -:100DB000E1008F7E8093E1008091E2008F7E80933E -:100DC000E2008091E20081608093E20080918A02DB -:100DD000882321F48091E30087FF02C084E001C0F2 -:100DE00081E08EBB0CDC8091E10083FF26C0809106 -:100DF000E20083FF22C08091E100877F8093E100C1 -:100E000082E08EBB10928A028091E1008E7F8093F7 -:100E1000E1008091E2008E7F8093E2008091E20009 -:100E200080618093E20080E060E042E05FDE8091DC -:100E3000F00088608093F000ADD1FF91EF91BF91F9 -:100E4000AF919F918F917F916F915F914F913F9162 -:100E50002F910F900FBE0F901F9018951F920F9219 -:100E60000FB60F9211241F932F933F934F935F93CD -:100E70006F937F938F939F93AF93BF93EF93FF9362 -:100E80001091E9001F708091EC001092E9008091B0 -:100E9000F000877F8093F00078941BD01092E900D7 -:100EA0008091F00088608093F0001093E900FF913A -:100EB000EF91BF91AF919F918F917F916F915F91D2 -:100EC0004F913F912F911F910F900FBE0F901F9048 -:100ED00018951F93DF93CF93CDB7DEB7AC970FB6BE -:100EE000F894DEBF0FBECDBFEEE8F2E08091F100D6 -:100EF000819322E0E639F207C9F786DB8091E800AA -:100F000083FF30C180918E0220918F02253009F439 -:100F100084C0263040F42130A1F1213070F023301C -:100F200009F020C12EC0283009F4EFC0293009F49F -:100F3000FEC0263009F016C192C0803821F08238F8 -:100F400009F010C108C080918B0290918C02992306 -:100F500071F082600CC0809192028F708093E900E2 -:100F60009091EB0081E095FF80E01092E900909174 -:100F7000E800977F9093E8008093F1001092F100D1 -:100F8000CFC0882319F0823009F0ECC090E08F7157 -:100F90009070009729F08230910509F0E3C00BC0F2 -:100FA00080919002813009F0DDC0233009F080E0AB -:100FB00080938C022CC080919002882341F520916F -:100FC00092022F7009F4CEC02093E9008091EB00CB -:100FD00080FF1DC080918F02833021F48091EB004F -:100FE000806213C08091EB0080618093EB0081E010 -:100FF00090E002C0880F991F2A95E2F78093EA00DB -:101000001092EA008091EB0088608093EB001092D0 -:10101000E9008091E800877F86C0882309F0A2C09C -:10102000109190021F778091E3008078812B80934C -:10103000E3008091E800877F8093E800D2DD809113 -:10104000E80080FFFCCF8091E30080688093E3009C -:10105000112311F083E001C082E08EBB83C0805871 -:10106000823008F07FC0809190029091910223E03D -:101070008C3D920791F583E08C838AE28B835FB786 -:10108000F894DE01159680E090E04EE061E2E42FF6 -:10109000F0E060935700E49180FF03C0E295EF70A9 -:1010A0004F5FEF702E2F30E0EA3018F0295C3F4F91 -:1010B00002C0205D3F4F2D933D93019684319105F1 -:1010C00031F75FBF8091E800877F8093E800CE0111 -:1010D00003966AE270E055DC12C060919202AE01A4 -:1010E0004F5F5F4F21DCBC01009709F43BC080914A -:1010F000E800877F8093E80089819A819CDC809159 -:10110000E8008B778093E8002DC0803859F58091F6 -:10111000E800877F8093E80080918A028093F10045 -:101120008091E8008E778093E8005BDD1BC0882308 -:10113000C9F4909190029230A8F48091E800877FE2 -:101140008093E80090938A024CDD80918A02882384 -:1011500021F48091E30087FF02C084E001C081E0B8 -:101160008EBB4FDA8091E80083FF0AC08091E800CF -:10117000877F8093E8008091EB0080628093EB0092 -:10118000AC960FB6F894DEBF0FBECDBFCF91DF9106 -:101190001F91089508951F938EB38823A9F080911D -:1011A000E9008F709091EC0090FF02C010E801C040 -:1011B00010E0182B1092E9008091E80083FF01C035 -:1011C00088DE1F701093E9001F910895CF93DF937D -:1011D000EC018091E80083FFA2C0888190E020911B -:1011E0009202309193022817390709F098C0809134 -:1011F0008F02813269F0823220F4803209F08FC090 -:101200003CC0823209F46AC0833209F088C079C0D8 -:1012100080918E02813A09F082C08091E800877F38 -:101220008093E8008091E80080FFFCCF8C899D8945 -:10123000AE89BF898093F100292F3A2F4B2F552774 -:101240002093F1009D01442755272093F1008B2F17 -:101250009927AA27BB278093F100888D8093F100FE -:10126000898D8093F1008A8D8093F1008091E80050 -:101270008E778093E800B5DC52C080918E02813277 -:1012800009F04DC08091E800877F8093E80004C09A -:101290008EB3882309F443C08091E80082FFF8CF21 -:1012A0003091F1002091F1009091F1008091F100D6 -:1012B0003C8B2D8B9E8B8F8B8091F100888F809142 -:1012C000F100898F8091F1008A8F8091E8008B77FF -:1012D0008093E80086DCCE01C4D921C080918E02C3 -:1012E0008132E9F48091E800877F8093E80079DC1F -:1012F0008091900290919102998B888BCE01D4D0ED -:101300000EC080918E02813251F48091E800877F77 -:101310008093E80066DCCE0160919002C5D0DF9139 -:10132000CF910895CF93DF93EC014096FC018BE0C1 -:10133000DF011D928A95E9F782E08C83898783E03B -:101340008E87CE01019661E008DC882359F0CE013A -:10135000069661E002DC882329F0CE010B9661E05D -:10136000FCDB01C080E0DF91CF910895DF93CF9344 -:101370000F92CDB7DEB7FC018EB38430F9F4248927 -:101380003589468957892115310541055105B1F047 -:1013900081818F708093E9008091E80085FD0AC00B -:1013A0008091E8008E778093E800698339DC698159 -:1013B000882329F46093F10080E001C082E00F905F -:1013C000CF91DF910895FC018EB3843019F5248903 -:1013D0003589468957892115310541055105D1F0D7 -:1013E00081818F708093E9008091F2008823A1F0C1 -:1013F0009091E8008091E8008E778093E80095FD59 -:101400000DC00EDC882359F49091E8009E779093EC -:10141000E800089582E0089580E0089580E008954E -:101420002EB3243099F4FC012489358946895789E3 -:10143000211531054105510549F021812F70209377 -:10144000E9002091E80020FF01C0BDCF0895FC0114 -:101450008EB3843029F52489358946895789211529 -:10146000310541055105E1F086818F708093E900D7 -:101470008091E80082FF14C08091F200882321F05F -:101480002091F10030E002C02FEF3FEF8091F20099 -:10149000882341F48091E8008B778093E80002C0B4 -:1014A0002FEF3FEFC901089508955058BB27AA2791 -:1014B0000ED070C161D130F066D120F031F49F3F81 -:1014C00011F41EF456C10EF4E095E7FB4CC1E92F70 -:1014D00072D180F3BA17620773078407950718F073 -:1014E00071F49EF58AC10EF4E0950B2EBA2FA02D53 -:1014F0000B01B90190010C01CA01A0011124FF27C1 -:10150000591B99F0593F50F4503E68F11A16F040BB -:10151000A22F232F342F4427585FF3CF46953795BA -:101520002795A795F0405395C9F77EF41F16BA0B7F -:10153000620B730B840BBAF09150A1F0FF0FBB1F2D -:10154000661F771F881FC2F70EC0BA0F621F731F76 -:10155000841F48F4879577956795B795F7959E3FD3 -:1015600008F0B3CF9395880F08F09927EE0F979561 -:1015700087950895D4D008F481E008950CD00AC16D -:1015800002D140F0F9D030F021F45F3F19F0EBC008 -:10159000511134C1EEC00FD198F39923C9F35523EB -:1015A000B1F3951B550BBB27AA2762177307840756 -:1015B00038F09F5F5F4F220F331F441FAA1FA9F30C -:1015C00033D00E2E3AF0E0E830D091505040E695FE -:1015D000001CCAF729D0FE2F27D0660F771F881F5F -:1015E000BB1F261737074807AB07B0E809F0BB0B4E -:1015F000802DBF01FF2793585F4F2AF09E3F510572 -:1016000068F0B1C0FBC05F3FECF3983EDCF3869519 -:1016100077956795B795F7959F5FC9F7880F911DE7 -:101620009695879597F90895E1E0660F771F881FD3 -:10163000BB1F621773078407BA0720F0621B730B86 -:10164000840BBA0BEE1F88F7E0950895BCD088F0A4 -:101650009F5790F0B92F9927B751A0F0D1F0660F9E -:10166000771F881F991F1AF0BA95C9F712C0B130B9 -:1016700081F0C3D0B1E00895C0C0672F782F8827CC -:10168000B85F39F0B93FCCF3869577956795B395F8 -:10169000D9F73EF490958095709561957F4F8F4F67 -:1016A0009F4F0895E89409C097FB3EF4909580956C -:1016B000709561957F4F8F4F9F4F9923A9F0F92F18 -:1016C00096E9BB279395F695879577956795B79596 -:1016D000F111F8CFFAF4BB0F11F460FF1BC06F5F7C -:1016E0007F4F8F4F9F4F16C0882311F096E911C08E -:1016F000772321F09EE8872F762F05C0662371F0AF -:1017000096E8862F70E060E02AF09A95660F771FC2 -:10171000881FDAF7880F9695879597F90895990F9E -:101720000008550FAA0BE0E8FEEF16161706E807AB -:10173000F907C0F012161306E407F50798F0621BCC -:10174000730B840B950B39F40A2661F0232B242BA1 -:10175000252B21F408950A2609F4A140A6958FEFC0 -:10176000811D811D089597F99F6780E870E060E012 -:1017700008959FEF80EC089500240A94161617062A -:1017800018060906089500240A9412161306140672 -:1017900005060895092E0394000C11F4882352F0D5 -:1017A000BB0F40F4BF2B11F460FF04C06F5F7F4F8D -:1017B0008F4F9F4F089557FD9058440F551F59F074 -:1017C0005F3F71F04795880F97FB991F61F09F3F2E -:1017D00079F087950895121613061406551FF2CF57 -:1017E0004695F1DF08C0161617061806991FF1CFA7 -:1017F00086957105610508940895E894BB276627CE -:101800007727CB0197F908958ADF08F48FEF0895C1 -:10181000A1E21A2EAA1BBB1BFD010DC0AA1FBB1FF4 -:10182000EE1FFF1FA217B307E407F50720F0A21B66 -:10183000B30BE40BF50B661F771F881F991F1A94D3 -:1018400069F760957095809590959B01AC01BD01FD -:08185000CF010895F894FFCFC9 -:10185800796F752073656C65637465642074686559 -:101868002072656C617469766520706F736974693C -:101878006F6E2064656D6F206D6F6475733A0A0D25 -:1018880000785F706F733A20002020795F706F7363 -:101898003A20000D00008310000001041000000130 -:1018A80082080000010000000000000000000000A5 -:0218B8003020DE +:100A600080918E02882309F43FC08530C9F18091BE +:100A7000E80083FD37C08091E80082FD2BC08091A3 +:100A8000E80080FF1BC08091F20090E007C0249135 +:100A90002093F10031966150704001966115710507 +:100AA00019F08830910598F321E08830910509F01C +:100AB00020E08091E8008E778093E8006115710551 +:100AC00079F6222369F606C080918E02882361F0B0 +:100AD000853061F08091E80082FFF6CF80E00895D4 +:100AE00083E0089581E0089582E0089583E0089509 +:100AF000982F2CC0292F2F702093E900981739F0D8 +:100B00007091EC002091ED005091F00003C0242F73 +:100B1000762F50E021FF19C03091EB003E7F3093DB +:100B2000EB003091ED003D7F3093ED003091EB0014 +:100B300031603093EB007093EC002093ED00509304 +:100B4000F0002091EE0027FF08C09F5F953090F2E3 +:100B50008F708093E90081E0089580E00895EF921E +:100B6000FF920F931F93CF93DF93162FE82EE70189 +:100B70007E01F92EE70100E02AC09881992329F12E +:100B80006B81E981FA812C81892F8F70853018F56E +:100B90006295660F660F607C991F9927991F692BD4 +:100BA000223010F096E001C092E028E030E040E012 +:100BB00003C04F5F220F331F2E173F07D0F342951C +:100BC000407F492B95DF882331F00F5F2596011771 +:100BD000A0F281E001C080E0DF91CF911F910F91E1 +:100BE000FF90EF90089580918F0287FF13C004C09B +:100BF00080918E028823B9F08091E80082FFF8CFBF +:100C00008091E8008B778093E800089580918E02B0 +:100C1000882349F08091E80080FFF8CF8091E800B8 +:100C20008E778093E80008958091E4009091E5002C +:100C300044E62091EC0020FF26C02091E80020FD32 +:100C400016C020918E022223A1F02530A1F0209120 +:100C5000EB0025FD12C02091E4003091E50028173B +:100C6000390739F3442359F04150C901E2CF80E0FC +:100C7000089582E0089583E0089581E0089584E076 +:100C8000089580E008952091E80022FFDACFF9CF9F +:100C900041D043D08091D8008F778093D800809145 +:100CA000D80080688093D8008091D8008F7D809391 +:100CB000D80084E089BD86E089BD09B400FEFDCF7F +:100CC00010928E0210928A0210928C0210928B0265 +:100CD00080E060E042E00CDF8091E1008E7F809355 +:100CE000E1008091E20081608093E2008091E20067 +:100CF00088608093E2008091E0008E7F8093E00026 +:100D00000895E3E6F0E080818E7F808381E0809328 +:100D10008D02BECF1092E20008951092E100089576 +:100D20001F920F920FB60F9211242F933F934F9360 +:100D30005F936F937F938F939F93AF93BF93EF9343 +:100D4000FF938091E10082FF0AC08091E20082FF60 +:100D500006C08091E1008B7F8093E100E6D1809115 +:100D6000E10080FF17C08091E20080FF13C08091F6 +:100D7000E2008E7F8093E2008091E20080618093A8 +:100D8000E2008091D80080628093D80019BC109254 +:100D90008E0236DC8091E10084FF2DC08091E2005C +:100DA00084FF29C084E089BD86E089BD09B400FEC6 +:100DB000FDCF8091D8008F7D8093D8008091E10095 +:100DC0008F7E8093E1008091E2008F7E8093E2002D +:100DD0008091E20081608093E20080918A02882302 +:100DE00021F48091E30087FF02C084E001C081E02C +:100DF00080938E0204DC8091E10083FF22C0809109 +:100E0000E20083FF1EC08091E100877F8093E100B4 +:100E100082E080938E0210928A028091E1008E7FA0 +:100E20008093E1008091E2008E7F8093E2008091C8 +:100E3000E20080618093E20080E060E042E058DE02 +:100E400074D1FF91EF91BF91AF919F918F917F915D +:100E50006F915F914F913F912F910F900FBE0F9027 +:100E60001F9018951F93DF93CF93CDB7DEB7AC9744 +:100E70000FB6F894DEBF0FBECDBFEFE8F2E0809171 +:100E8000F100819322E0E739F207C9F7BDDB8091D9 +:100E9000E80083FF32C180918F02209190022530BB +:100EA00009F484C0263040F42130A1F1213070F0E3 +:100EB000233009F022C12EC0283009F4F0C02930B7 +:100EC00009F4FFC0263009F018C193C0803821F022 +:100ED000823809F012C108C080918B0290918C0277 +:100EE000992371F082600CC0809193028F7080937F +:100EF000E9009091EB0081E095FF80E01092E9001D +:100F00009091E800977F9093E8008093F100109211 +:100F1000F100D0C0882319F0823009F0EEC090E0D3 +:100F20008F719070009729F08230910509F0E5C02B +:100F30000BC080919102813009F0DFC0233009F0AD +:100F400080E080938C022CC080919102882341F52F +:100F5000209193022F7009F4D0C02093E900809172 +:100F6000EB0080FF1DC080919002833021F48091BE +:100F7000EB00806213C08091EB0080618093EB00F6 +:100F800081E090E002C0880F991F2A95E2F78093D4 +:100F9000EA001092EA008091EB0088608093EB00F9 +:100FA0001092E9008091E800877F87C0882309F0CC +:100FB000A4C0109191021F778091E3008078812B6B +:100FC0008093E3008091E800877F8093E8000BDE48 +:100FD0008091E80080FFFCCF8091E30080688093DF +:100FE000E300112311F083E001C082E080938E02C0 +:100FF00084C08058823008F080C080919102909126 +:10100000920223E08C3D920791F583E08C838AE283 +:101010008B835FB7F894DE01159680E090E04EE098 +:1010200061E2E42FF0E060935700E49180FF03C099 +:10103000E295EF704F5FEF702E2F30E0EA3018F03E +:10104000295C3F4F02C0205D3F4F2D933D93019699 +:101050008431910531F75FBF8091E800877F8093ED +:10106000E800CE0103966AE270E089DC12C060916C +:101070009302AE014F5F5F4F55DCBC01009709F44E +:101080003CC08091E800877F8093E80089819A8145 +:10109000D2DC8091E8008B778093E8002EC0803806 +:1010A00061F58091E800877F8093E80080918A0253 +:1010B0008093F1008091E8008E778093E80093DDC3 +:1010C0001CC08823D1F4909191029230B0F48091A9 +:1010D000E800877F8093E80090938A0284DD809106 +:1010E0008A02882321F48091E30087FF02C084E014 +:1010F00001C081E080938E0284DA8091E80083FF52 +:101100000AC08091E800877F8093E8008091EB001F +:1011100080628093EB00AC960FB6F894DEBF0FBEF2 +:10112000CDBFCF91DF911F91089508951F938091B6 +:101130008E028823A9F08091E9008F709091EC00D5 +:1011400090FF02C010E801C010E0182B1092E900D7 +:101150008091E80083FF01C085DE1F701093E900D5 +:101160001F910895CF93DF93EC018091E80083FFF6 +:10117000A3C0888190E020919302309194022817B7 +:10118000390709F099C080919002813269F082326A +:1011900020F4803209F090C03CC0823209F46BC068 +:1011A000833209F089C07AC080918F02813A09F0B8 +:1011B00083C08091E800877F8093E8008091E800F9 +:1011C00080FFFCCF8C899D89AE89BF898093F10017 +:1011D000292F3A2F4B2F55272093F1009D014427AB +:1011E00055272093F1008B2F9927AA27BB2780939F +:1011F000F100888D8093F100898D8093F1008A8DB4 +:101200008093F1008091E8008E778093E800EBDC1A +:1012100053C080918F02813209F04EC08091E80066 +:10122000877F8093E80005C080918E02882309F4AF +:1012300043C08091E80082FFF7CF3091F100209108 +:10124000F1009091F1008091F1003C8B2D8B9E8BF1 +:101250008F8B8091F100888F8091F100898F809130 +:10126000F1008A8F8091E8008B778093E800BBDCE7 +:10127000CE01F7D921C080918F028132E9F48091AB +:10128000E800877F8093E800AEDC80919102909126 +:101290009202998B888BCE01D8D00EC080918F029C +:1012A000813251F48091E800877F8093E8009BDCD5 +:1012B000CE0160919102C9D0DF91CF910895CF9373 +:1012C000DF93EC014096FC018BE0DF011D928A95D3 +:1012D000E9F782E08C83898783E08E87CE010196CF +:1012E00061E03DDC882359F0CE01069661E037DCF1 +:1012F000882329F0CE010B9661E031DC01C080E04B +:10130000DF91CF910895DF93CF930F92CDB7DEB7E2 +:10131000FC0180918E028430F9F424893589468954 +:1013200057892115310541055105B1F081818F7033 +:101330008093E9008091E80085FD0AC08091E80073 +:101340008E778093E80069836FDC6981882329F4B4 +:101350006093F10080E001C082E00F90CF91DF91B7 +:101360000895FC0180918E02843019F52489358915 +:10137000468957892115310541055105D1F08181F3 +:101380008F708093E9008091F2008823A1F0909102 +:10139000E8008091E8008E778093E80095FD0DC00D +:1013A00043DC882359F49091E8009E779093E800FD +:1013B000089582E0089580E0089580E008952091E6 +:1013C0008E02243099F4FC01248935894689578995 +:1013D000211531054105510549F021812F702093D8 +:1013E000E9002091E80020FF01C0BBCF0895FC0177 +:1013F00080918E02843029F5248935894689578960 +:101400002115310541055105E1F086818F708093EA +:10141000E9008091E80082FF14C08091F2008823E7 +:1014200021F02091F10030E002C02FEF3FEF8091DA +:10143000F200882341F48091E8008B778093E800E4 +:1014400002C02FEF3FEFC901089508955058BB2700 +:10145000AA270ED070C161D130F066D120F031F4EE +:101460009F3F11F41EF456C10EF4E095E7FB4CC10A +:10147000E92F72D180F3BA176207730784079507C3 +:1014800018F071F49EF58AC10EF4E0950B2EBA2F78 +:10149000A02D0B01B90190010C01CA01A00111247A +:1014A000FF27591B99F0593F50F4503E68F11A1626 +:1014B000F040A22F232F342F4427585FF3CF4695B7 +:1014C00037952795A795F0405395C9F77EF41F16D9 +:1014D000BA0B620B730B840BBAF09150A1F0FF0FA3 +:1014E000BB1F661F771F881FC2F70EC0BA0F621F8F +:1014F000731F841F48F4879577956795B795F7957F +:101500009E3F08F0B3CF9395880F08F09927EE0F10 +:10151000979587950895D4D008F481E008950CD06C +:101520000AC102D140F0F9D030F021F45F3F19F048 +:10153000EBC0511134C1EEC00FD198F39923C9F318 +:101540005523B1F3951B550BBB27AA2762177307C9 +:10155000840738F09F5F5F4F220F331F441FAA1F7D +:10156000A9F333D00E2E3AF0E0E830D0915050403D +:10157000E695001CCAF729D0FE2F27D0660F771FEB +:10158000881FBB1F261737074807AB07B0E809F0CD +:10159000BB0B802DBF01FF2793585F4F2AF09E3F62 +:1015A000510568F0B1C0FBC05F3FECF3983EDCF33F +:1015B000869577956795B795F7959F5FC9F7880FDB +:1015C000911D9695879597F90895E1E0660F771F2D +:1015D000881FBB1F621773078407BA0720F0621BBE +:1015E000730B840BBA0BEE1F88F7E0950895BCD0FF +:1015F00088F09F5790F0B92F9927B751A0F0D1F0FC +:10160000660F771F881F991F1AF0BA95C9F712C085 +:10161000B13081F0C3D0B1E00895C0C0672F782FFA +:101620008827B85F39F0B93FCCF3869577956795F1 +:10163000B395D9F73EF490958095709561957F4F5D +:101640008F4F9F4F0895E89409C097FB3EF4909503 +:101650008095709561957F4F8F4F9F4F9923A9F08B +:10166000F92F96E9BB279395F6958795779567951A +:10167000B795F111F8CFFAF4BB0F11F460FF1BC05E +:101680006F5F7F4F8F4F9F4F16C0882311F096E9F1 +:1016900011C0772321F09EE8872F762F05C066239F +:1016A00071F096E8862F70E060E02AF09A95660F58 +:1016B000771F881FDAF7880F9695879597F9089511 +:1016C000990F0008550FAA0BE0E8FEEF1616170653 +:1016D000E807F907C0F012161306E407F50798F0BB +:1016E000621B730B840B950B39F40A2661F0232BD4 +:1016F000242B252B21F408950A2609F4A140A69550 +:101700008FEF811D811D089597F99F6780E870E034 +:1017100060E008959FEF80EC089500240A94161667 +:10172000170618060906089500240A9412161306CF +:10173000140605060895092E0394000C11F488235D +:1017400052F0BB0F40F4BF2B11F460FF04C06F5F79 +:101750007F4F8F4F9F4F089557FD9058440F551F4F +:1017600059F05F3F71F04795880F97FB991F61F023 +:101770009F3F79F087950895121613061406551F9A +:10178000F2CF4695F1DF08C0161617061806991F06 +:10179000F1CF86957105610508940895E894BB27FB +:1017A00066277727CB0197F908958ADF08F48FEF32 +:1017B0000895A1E21A2EAA1BBB1BFD010DC0AA1F92 +:1017C000BB1FEE1FFF1FA217B307E407F50720F0AA +:1017D000A21BB30BE40BF50B661F771F881F991F25 +:1017E0001A9469F760957095809590959B01AC016E +:0A17F000BD01CF010895F894FFCF6A +:1017FA00796F752073656C656374656420746865B8 +:10180A002072656C617469766520706F736974699A +:10181A006F6E2064656D6F206D6F6475733A0A0D83 +:10182A0000785F706F733A20002020795F706F73C1 +:10183A003A20000D0000831000000104100000018E +:10184A008208000001000000000000000000000003 +:02185A0030203C :00000001FF diff --git a/firmware/USBtoSerial.lss b/firmware/USBtoSerial.lss index 1db7b0d..3ddef31 100644 --- a/firmware/USBtoSerial.lss +++ b/firmware/USBtoSerial.lss @@ -3,35 +3,35 @@ USBtoSerial.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn - 0 .data 00000062 00800100 00001858 000018ec 2**0 + 0 .data 00000062 00800100 000017fa 0000188e 2**0 CONTENTS, ALLOC, LOAD, DATA - 1 .text 00001858 00000000 00000000 00000094 2**1 + 1 .text 000017fa 00000000 00000000 00000094 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE - 2 .bss 00000134 00800162 00800162 0000194e 2**0 + 2 .bss 00000135 00800162 00800162 000018f0 2**0 ALLOC - 3 .stab 0000228c 00000000 00000000 00001950 2**2 + 3 .stab 0000228c 00000000 00000000 000018f0 2**2 CONTENTS, READONLY, DEBUGGING - 4 .stabstr 0000044f 00000000 00000000 00003bdc 2**0 + 4 .stabstr 0000044f 00000000 00000000 00003b7c 2**0 CONTENTS, READONLY, DEBUGGING - 5 .debug_aranges 00000538 00000000 00000000 0000402b 2**0 + 5 .debug_aranges 00000530 00000000 00000000 00003fcb 2**0 CONTENTS, READONLY, DEBUGGING - 6 .debug_pubnames 00000e11 00000000 00000000 00004563 2**0 + 6 .debug_pubnames 00000e15 00000000 00000000 000044fb 2**0 CONTENTS, READONLY, DEBUGGING - 7 .debug_info 00008d6f 00000000 00000000 00005374 2**0 + 7 .debug_info 00008daf 00000000 00000000 00005310 2**0 CONTENTS, READONLY, DEBUGGING - 8 .debug_abbrev 000021a4 00000000 00000000 0000e0e3 2**0 + 8 .debug_abbrev 0000219a 00000000 00000000 0000e0bf 2**0 CONTENTS, READONLY, DEBUGGING - 9 .debug_line 00007605 00000000 00000000 00010287 2**0 + 9 .debug_line 000077dd 00000000 00000000 00010259 2**0 CONTENTS, READONLY, DEBUGGING - 10 .debug_frame 00000830 00000000 00000000 0001788c 2**2 + 10 .debug_frame 00000820 00000000 00000000 00017a38 2**2 CONTENTS, READONLY, DEBUGGING - 11 .debug_str 00003bf7 00000000 00000000 000180bc 2**0 + 11 .debug_str 00003ce7 00000000 00000000 00018258 2**0 CONTENTS, READONLY, DEBUGGING - 12 .debug_loc 00004645 00000000 00000000 0001bcb3 2**0 + 12 .debug_loc 00004631 00000000 00000000 0001bf3f 2**0 CONTENTS, READONLY, DEBUGGING - 13 .debug_pubtypes 00001111 00000000 00000000 000202f8 2**0 + 13 .debug_pubtypes 00001111 00000000 00000000 00020570 2**0 CONTENTS, READONLY, DEBUGGING - 14 .debug_ranges 00000790 00000000 00000000 00021409 2**0 + 14 .debug_ranges 00000788 00000000 00000000 00021681 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: @@ -71,9 +71,9 @@ Disassembly of section .text: 26: 00 00 nop 28: a2 c0 rjmp .+324 ; 0x16e <__bad_interrupt> 2a: 00 00 nop - 2c: 73 c6 rjmp .+3302 ; 0xd14 <__vector_11> + 2c: 79 c6 rjmp .+3314 ; 0xd20 <__vector_11> 2e: 00 00 nop - 30: 15 c7 rjmp .+3626 ; 0xe5c <__vector_12> + 30: 9e c0 rjmp .+316 ; 0x16e <__bad_interrupt> 32: 00 00 nop 34: 9c c0 rjmp .+312 ; 0x16e <__bad_interrupt> 36: 00 00 nop @@ -160,8 +160,8 @@ Disassembly of section .text: 142: 11 e0 ldi r17, 0x01 ; 1 144: a0 e0 ldi r26, 0x00 ; 0 146: b1 e0 ldi r27, 0x01 ; 1 - 148: e8 e5 ldi r30, 0x58 ; 88 - 14a: f8 e1 ldi r31, 0x18 ; 24 + 148: ea ef ldi r30, 0xFA ; 250 + 14a: f7 e1 ldi r31, 0x17 ; 23 14c: 02 c0 rjmp .+4 ; 0x152 <__do_copy_data+0x10> 14e: 05 90 lpm r0, Z+ 150: 0d 92 st X+, r0 @@ -179,11 +179,11 @@ Disassembly of section .text: 160: 1d 92 st X+, r1 00000162 <.do_clear_bss_start>: - 162: a6 39 cpi r26, 0x96 ; 150 + 162: a7 39 cpi r26, 0x97 ; 151 164: b1 07 cpc r27, r17 166: e1 f7 brne .-8 ; 0x160 <.do_clear_bss_loop> - 168: 5f d3 rcall .+1726 ; 0x828
- 16a: 0c 94 2a 0c jmp 0x1854 ; 0x1854 <_exit> + 168: 5d d3 rcall .+1722 ; 0x824
+ 16a: 0c 94 fb 0b jmp 0x17f6 ; 0x17f6 <_exit> 0000016e <__bad_interrupt>: 16e: 48 cf rjmp .-368 ; 0x0 <__vectors> @@ -463,12 +463,12 @@ u08 adb(void) { 256: bc 01 movw r22, r24 258: 80 e0 ldi r24, 0x00 ; 0 25a: 90 e0 ldi r25, 0x00 ; 0 - 25c: 0e 94 52 0b call 0x16a4 ; 0x16a4 <__floatunsisf> + 25c: 0e 94 23 0b call 0x1646 ; 0x1646 <__floatunsisf> 260: 20 e0 ldi r18, 0x00 ; 0 262: 30 e8 ldi r19, 0x80 ; 128 264: 4e e0 ldi r20, 0x0E ; 14 266: 53 e4 ldi r21, 0x43 ; 67 - 268: 0e 94 ba 0a call 0x1574 ; 0x1574 <__cmpsf2> + 268: 0e 94 8b 0a call 0x1516 ; 0x1516 <__cmpsf2> 26c: 87 fd sbrc r24, 7 26e: f2 cf rjmp .-28 ; 0x254 ; // Warteschleife @@ -495,12 +495,12 @@ u08 adb(void) { 282: bc 01 movw r22, r24 284: 80 e0 ldi r24, 0x00 ; 0 286: 90 e0 ldi r25, 0x00 ; 0 - 288: 0e 94 52 0b call 0x16a4 ; 0x16a4 <__floatunsisf> + 288: 0e 94 23 0b call 0x1646 ; 0x1646 <__floatunsisf> 28c: 20 e0 ldi r18, 0x00 ; 0 28e: 30 e0 ldi r19, 0x00 ; 0 290: 4c e8 ldi r20, 0x8C ; 140 292: 52 e4 ldi r21, 0x42 ; 66 - 294: 0e 94 ba 0a call 0x1574 ; 0x1574 <__cmpsf2> + 294: 0e 94 8b 0a call 0x1516 ; 0x1516 <__cmpsf2> 298: 87 fd sbrc r24, 7 29a: f2 cf rjmp .-28 ; 0x280 ; @@ -513,12 +513,12 @@ u08 adb(void) { 2a2: bc 01 movw r22, r24 2a4: 80 e0 ldi r24, 0x00 ; 0 2a6: 90 e0 ldi r25, 0x00 ; 0 - 2a8: 0e 94 52 0b call 0x16a4 ; 0x16a4 <__floatunsisf> + 2a8: 0e 94 23 0b call 0x1646 ; 0x1646 <__floatunsisf> 2ac: 20 e0 ldi r18, 0x00 ; 0 2ae: 30 e0 ldi r19, 0x00 ; 0 2b0: 48 e4 ldi r20, 0x48 ; 72 2b2: 53 e4 ldi r21, 0x43 ; 67 - 2b4: 0e 94 ba 0a call 0x1574 ; 0x1574 <__cmpsf2> + 2b4: 0e 94 8b 0a call 0x1516 ; 0x1516 <__cmpsf2> 2b8: 87 fd sbrc r24, 7 2ba: f2 cf rjmp .-28 ; 0x2a0 2bc: 41 c0 rjmp .+130 ; 0x340 @@ -560,12 +560,12 @@ u08 adb(void) { 2e0: bc 01 movw r22, r24 2e2: 80 e0 ldi r24, 0x00 ; 0 2e4: 90 e0 ldi r25, 0x00 ; 0 - 2e6: 0e 94 52 0b call 0x16a4 ; 0x16a4 <__floatunsisf> + 2e6: 0e 94 23 0b call 0x1646 ; 0x1646 <__floatunsisf> 2ea: 20 e0 ldi r18, 0x00 ; 0 2ec: 30 e0 ldi r19, 0x00 ; 0 2ee: 4c e8 ldi r20, 0x8C ; 140 2f0: 52 e4 ldi r21, 0x42 ; 66 - 2f2: 0e 94 ba 0a call 0x1574 ; 0x1574 <__cmpsf2> + 2f2: 0e 94 8b 0a call 0x1516 ; 0x1516 <__cmpsf2> 2f6: 87 fd sbrc r24, 7 2f8: f2 cf rjmp .-28 ; 0x2de 2fa: 0e c0 rjmp .+28 ; 0x318 @@ -576,12 +576,12 @@ u08 adb(void) { 2fe: bc 01 movw r22, r24 300: 80 e0 ldi r24, 0x00 ; 0 302: 90 e0 ldi r25, 0x00 ; 0 - 304: 0e 94 52 0b call 0x16a4 ; 0x16a4 <__floatunsisf> + 304: 0e 94 23 0b call 0x1646 ; 0x1646 <__floatunsisf> 308: 20 e0 ldi r18, 0x00 ; 0 30a: 30 e0 ldi r19, 0x00 ; 0 30c: 42 e0 ldi r20, 0x02 ; 2 30e: 53 e4 ldi r21, 0x43 ; 67 - 310: 0e 94 ba 0a call 0x1574 ; 0x1574 <__cmpsf2> + 310: 0e 94 8b 0a call 0x1516 ; 0x1516 <__cmpsf2> 314: 87 fd sbrc r24, 7 316: f2 cf rjmp .-28 ; 0x2fc ; @@ -594,12 +594,12 @@ u08 adb(void) { 31e: bc 01 movw r22, r24 320: 80 e0 ldi r24, 0x00 ; 0 322: 90 e0 ldi r25, 0x00 ; 0 - 324: 0e 94 52 0b call 0x16a4 ; 0x16a4 <__floatunsisf> + 324: 0e 94 23 0b call 0x1646 ; 0x1646 <__floatunsisf> 328: 20 e0 ldi r18, 0x00 ; 0 32a: 30 e0 ldi r19, 0x00 ; 0 32c: 48 e4 ldi r20, 0x48 ; 72 32e: 53 e4 ldi r21, 0x43 ; 67 - 330: 0e 94 ba 0a call 0x1574 ; 0x1574 <__cmpsf2> + 330: 0e 94 8b 0a call 0x1516 ; 0x1516 <__cmpsf2> 334: 87 fd sbrc r24, 7 336: f2 cf rjmp .-28 ; 0x31c ADB_POUT |= ADB_BIT; @@ -637,12 +637,12 @@ u08 adb(void) { 34e: bc 01 movw r22, r24 350: 80 e0 ldi r24, 0x00 ; 0 352: 90 e0 ldi r25, 0x00 ; 0 - 354: 0e 94 52 0b call 0x16a4 ; 0x16a4 <__floatunsisf> + 354: 0e 94 23 0b call 0x1646 ; 0x1646 <__floatunsisf> 358: 20 e0 ldi r18, 0x00 ; 0 35a: 30 e0 ldi r19, 0x00 ; 0 35c: 42 e0 ldi r20, 0x02 ; 2 35e: 53 e4 ldi r21, 0x43 ; 67 - 360: 0e 94 ba 0a call 0x1574 ; 0x1574 <__cmpsf2> + 360: 0e 94 8b 0a call 0x1516 ; 0x1516 <__cmpsf2> 364: 87 fd sbrc r24, 7 366: f2 cf rjmp .-28 ; 0x34c ; @@ -655,12 +655,12 @@ u08 adb(void) { 36e: bc 01 movw r22, r24 370: 80 e0 ldi r24, 0x00 ; 0 372: 90 e0 ldi r25, 0x00 ; 0 - 374: 0e 94 52 0b call 0x16a4 ; 0x16a4 <__floatunsisf> + 374: 0e 94 23 0b call 0x1646 ; 0x1646 <__floatunsisf> 378: 20 e0 ldi r18, 0x00 ; 0 37a: 30 e0 ldi r19, 0x00 ; 0 37c: 48 e4 ldi r20, 0x48 ; 72 37e: 53 e4 ldi r21, 0x43 ; 67 - 380: 0e 94 ba 0a call 0x1574 ; 0x1574 <__cmpsf2> + 380: 0e 94 8b 0a call 0x1516 ; 0x1516 <__cmpsf2> 384: 87 fd sbrc r24, 7 386: f2 cf rjmp .-28 ; 0x36c ; @@ -706,12 +706,12 @@ u08 adb(void) { 3a8: bc 01 movw r22, r24 3aa: 80 e0 ldi r24, 0x00 ; 0 3ac: 90 e0 ldi r25, 0x00 ; 0 - 3ae: 0e 94 52 0b call 0x16a4 ; 0x16a4 <__floatunsisf> + 3ae: 0e 94 23 0b call 0x1646 ; 0x1646 <__floatunsisf> 3b2: 20 e0 ldi r18, 0x00 ; 0 3b4: 30 e0 ldi r19, 0x00 ; 0 3b6: 4a ef ldi r20, 0xFA ; 250 3b8: 53 e4 ldi r21, 0x43 ; 67 - 3ba: 0e 94 04 0c call 0x1808 ; 0x1808 <__gesf2> + 3ba: 0e 94 d5 0b call 0x17aa ; 0x17aa <__gesf2> 3be: 18 16 cp r1, r24 3c0: 0c f4 brge .+2 ; 0x3c4 3c2: 42 c0 rjmp .+132 ; 0x448 @@ -756,12 +756,12 @@ u08 adb(void) { 3e4: bc 01 movw r22, r24 3e6: 80 e0 ldi r24, 0x00 ; 0 3e8: 90 e0 ldi r25, 0x00 ; 0 - 3ea: 0e 94 52 0b call 0x16a4 ; 0x16a4 <__floatunsisf> + 3ea: 0e 94 23 0b call 0x1646 ; 0x1646 <__floatunsisf> 3ee: 20 e0 ldi r18, 0x00 ; 0 3f0: 30 e0 ldi r19, 0x00 ; 0 3f2: 48 e4 ldi r20, 0x48 ; 72 3f4: 53 e4 ldi r21, 0x43 ; 67 - 3f6: 0e 94 04 0c call 0x1808 ; 0x1808 <__gesf2> + 3f6: 0e 94 d5 0b call 0x17aa ; 0x17aa <__gesf2> 3fa: 18 16 cp r1, r24 3fc: 14 f4 brge .+4 ; 0x402 return (z_byte - 1); @@ -782,12 +782,12 @@ u08 adb(void) { 40e: bc 01 movw r22, r24 410: 80 e0 ldi r24, 0x00 ; 0 412: 90 e0 ldi r25, 0x00 ; 0 - 414: 0e 94 52 0b call 0x16a4 ; 0x16a4 <__floatunsisf> + 414: 0e 94 23 0b call 0x1646 ; 0x1646 <__floatunsisf> 418: 20 e0 ldi r18, 0x00 ; 0 41a: 30 e0 ldi r19, 0x00 ; 0 41c: 48 ec ldi r20, 0xC8 ; 200 41e: 52 e4 ldi r21, 0x42 ; 66 - 420: 0e 94 ba 0a call 0x1574 ; 0x1574 <__cmpsf2> + 420: 0e 94 8b 0a call 0x1516 ; 0x1516 <__cmpsf2> 424: 87 ff sbrs r24, 7 426: 03 c0 rjmp .+6 ; 0x42e adb_werte[z_byte] += bitpos; @@ -1086,7 +1086,7 @@ void Usb2SerialTask(void) { int16_t ReceivedByte = CDC_Device_ReceiveByte(&VirtualSerial_CDC_Interface); 540: 85 e4 ldi r24, 0x45 ; 69 542: 91 e0 ldi r25, 0x01 ; 1 - 544: 84 d7 rcall .+3848 ; 0x144e + 544: 54 d7 rcall .+3752 ; 0x13ee 546: bc 01 movw r22, r24 /* Read bytes from the USB OUT endpoint into the USART transmit buffer */ @@ -1179,7 +1179,7 @@ void Usb2SerialTask(void) { 58c: 85 e4 ldi r24, 0x45 ; 69 58e: 91 e0 ldi r25, 0x01 ; 1 590: 60 81 ld r22, Z - 592: ec d6 rcall .+3544 ; 0x136c + 592: b9 d6 rcall .+3442 ; 0x1306 594: 11 50 subi r17, 0x01 ; 1 596: 88 23 and r24, r24 598: 29 f4 brne .+10 ; 0x5a4 @@ -1258,9 +1258,9 @@ void Usb2SerialTask(void) { CDC_Device_USBTask(&VirtualSerial_CDC_Interface); 5c8: 85 e4 ldi r24, 0x45 ; 69 5ca: 91 e0 ldi r25, 0x01 ; 1 - 5cc: 29 d7 rcall .+3666 ; 0x1420 + 5cc: f8 d6 rcall .+3568 ; 0x13be USB_USBTask(); - 5ce: e3 d5 rcall .+3014 ; 0x1196 + 5ce: ae d5 rcall .+2908 ; 0x112c } 5d0: 1f 91 pop r17 @@ -1302,7 +1302,7 @@ void clock_prescale_set(clock_div_t __x) // LEDs_Init(); USB_Init(); } - 5fc: 7c c3 rjmp .+1784 ; 0xcf6 + 5fc: 82 c3 rjmp .+1796 ; 0xd02 000005fe : @@ -1334,7 +1334,7 @@ void EVENT_USB_Device_ConfigurationChanged(void) // LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR); } - 606: 8e c6 rjmp .+3356 ; 0x1324 + 606: 5b c6 rjmp .+3254 ; 0x12be 00000608 : @@ -1345,7 +1345,7 @@ void EVENT_USB_Device_ControlRequest(void) 608: 85 e4 ldi r24, 0x45 ; 69 60a: 91 e0 ldi r25, 0x01 ; 1 } - 60c: df c5 rjmp .+3006 ; 0x11cc + 60c: ab c5 rjmp .+2902 ; 0x1164 0000060e <__vector_23>: @@ -1488,28 +1488,28 @@ void EVENT_CDC_Device_LineEncodingChanged(USB_ClassInfo_CDC_Device_t* const CDCI 6c4: 87 95 ror r24 6c6: 77 95 ror r23 6c8: 67 95 ror r22 - 6ca: ec d7 rcall .+4056 ; 0x16a4 <__floatunsisf> + 6ca: bd d7 rcall .+3962 ; 0x1646 <__floatunsisf> 6cc: 20 e0 ldi r18, 0x00 ; 0 6ce: 34 e2 ldi r19, 0x24 ; 36 6d0: 44 ef ldi r20, 0xF4 ; 244 6d2: 59 e4 ldi r21, 0x49 ; 73 - 6d4: eb d6 rcall .+3542 ; 0x14ac <__addsf3> + 6d4: bc d6 rcall .+3448 ; 0x144e <__addsf3> 6d6: 4b 01 movw r8, r22 6d8: 5c 01 movw r10, r24 6da: c7 01 movw r24, r14 6dc: b6 01 movw r22, r12 - 6de: e2 d7 rcall .+4036 ; 0x16a4 <__floatunsisf> + 6de: b3 d7 rcall .+3942 ; 0x1646 <__floatunsisf> 6e0: 9b 01 movw r18, r22 6e2: ac 01 movw r20, r24 6e4: c5 01 movw r24, r10 6e6: b4 01 movw r22, r8 - 6e8: 49 d7 rcall .+3730 ; 0x157c <__divsf3> + 6e8: 1a d7 rcall .+3636 ; 0x151e <__divsf3> 6ea: 20 e0 ldi r18, 0x00 ; 0 6ec: 30 e0 ldi r19, 0x00 ; 0 6ee: 40 e8 ldi r20, 0x80 ; 128 6f0: 5f e3 ldi r21, 0x3F ; 63 - 6f2: db d6 rcall .+3510 ; 0x14aa <__subsf3> - 6f4: ab d7 rcall .+3926 ; 0x164c <__fixunssfsi> + 6f2: ac d6 rcall .+3416 ; 0x144c <__subsf3> + 6f4: 7c d7 rcall .+3832 ; 0x15ee <__fixunssfsi> 6f6: 70 93 cd 00 sts 0x00CD, r23 6fa: 60 93 cc 00 sts 0x00CC, r22 @@ -1675,7 +1675,7 @@ void my_uitoa(uint32_t zahl, char* string, uint8_t no_digits) { string[no_digits] = '\0'; // String Terminator for (i = (no_digits - 1); i >= 0; i--) { - 7b8: 22 c0 rjmp .+68 ; 0x7fe + 7b8: 20 c0 rjmp .+64 ; 0x7fa if (zahl == 0 && i < (no_digits - 1)) { 7ba: e1 14 cp r14, r1 7bc: f1 04 cpc r15, r1 @@ -1701,600 +1701,600 @@ void my_uitoa(uint32_t zahl, char* string, uint8_t no_digits) { 7ce: 14 f4 brge .+4 ; 0x7d4 string[i] = ' '; 7d0: c8 82 st Y, r12 - 7d2: 08 c0 rjmp .+16 ; 0x7e4 + 7d2: 07 c0 rjmp .+14 ; 0x7e2 } else { string[i] = (zahl % 10) + '0'; 7d4: c8 01 movw r24, r16 7d6: b7 01 movw r22, r14 7d8: a4 01 movw r20, r8 7da: 93 01 movw r18, r6 - 7dc: 0e 94 08 0c call 0x1810 ; 0x1810 <__udivmodsi4> - 7e0: 60 5d subi r22, 0xD0 ; 208 - 7e2: 68 83 st Y, r22 + 7dc: ea d7 rcall .+4052 ; 0x17b2 <__udivmodsi4> + 7de: 60 5d subi r22, 0xD0 ; 208 + 7e0: 68 83 st Y, r22 } // Modulo rechnen, dann den ASCII-Code von '0' addieren zahl /= 10; - 7e4: c8 01 movw r24, r16 - 7e6: b7 01 movw r22, r14 - 7e8: a4 01 movw r20, r8 - 7ea: 93 01 movw r18, r6 - 7ec: 0e 94 08 0c call 0x1810 ; 0x1810 <__udivmodsi4> - 7f0: 79 01 movw r14, r18 - 7f2: 8a 01 movw r16, r20 + 7e2: c8 01 movw r24, r16 + 7e4: b7 01 movw r22, r14 + 7e6: a4 01 movw r20, r8 + 7e8: 93 01 movw r18, r6 + 7ea: e3 d7 rcall .+4038 ; 0x17b2 <__udivmodsi4> + 7ec: 79 01 movw r14, r18 + 7ee: 8a 01 movw r16, r20 // convert an unsigned integer to string void my_uitoa(uint32_t zahl, char* string, uint8_t no_digits) { int8_t i; // schleifenzähler string[no_digits] = '\0'; // String Terminator for (i = (no_digits - 1); i >= 0; i--) { - 7f4: da 94 dec r13 - 7f6: 21 97 sbiw r28, 0x01 ; 1 - 7f8: 08 94 sec - 7fa: a1 08 sbc r10, r1 - 7fc: b1 08 sbc r11, r1 - 7fe: d7 fe sbrs r13, 7 - 800: dc cf rjmp .-72 ; 0x7ba + 7f0: da 94 dec r13 + 7f2: 21 97 sbiw r28, 0x01 ; 1 + 7f4: 08 94 sec + 7f6: a1 08 sbc r10, r1 + 7f8: b1 08 sbc r11, r1 + 7fa: d7 fe sbrs r13, 7 + 7fc: de cf rjmp .-68 ; 0x7ba string[i] = (zahl % 10) + '0'; } // Modulo rechnen, dann den ASCII-Code von '0' addieren zahl /= 10; } } - 802: df 91 pop r29 - 804: cf 91 pop r28 - 806: 1f 91 pop r17 - 808: 0f 91 pop r16 - 80a: ff 90 pop r15 - 80c: ef 90 pop r14 - 80e: df 90 pop r13 - 810: cf 90 pop r12 - 812: bf 90 pop r11 - 814: af 90 pop r10 - 816: 9f 90 pop r9 - 818: 8f 90 pop r8 - 81a: 7f 90 pop r7 - 81c: 6f 90 pop r6 - 81e: 5f 90 pop r5 - 820: 4f 90 pop r4 - 822: 3f 90 pop r3 - 824: 2f 90 pop r2 - 826: 08 95 ret - -00000828
: + 7fe: df 91 pop r29 + 800: cf 91 pop r28 + 802: 1f 91 pop r17 + 804: 0f 91 pop r16 + 806: ff 90 pop r15 + 808: ef 90 pop r14 + 80a: df 90 pop r13 + 80c: cf 90 pop r12 + 80e: bf 90 pop r11 + 810: af 90 pop r10 + 812: 9f 90 pop r9 + 814: 8f 90 pop r8 + 816: 7f 90 pop r7 + 818: 6f 90 pop r6 + 81a: 5f 90 pop r5 + 81c: 4f 90 pop r4 + 81e: 3f 90 pop r3 + 820: 2f 90 pop r2 + 822: 08 95 ret + +00000824
: /** Main program entry point. This routine contains the overall program flow, including initial * setup of all components and the main program loop. */ int main(void) { - 828: cf 92 push r12 - 82a: df 92 push r13 - 82c: ef 92 push r14 - 82e: ff 92 push r15 - 830: 0f 93 push r16 - 832: 1f 93 push r17 - 834: df 93 push r29 - 836: cf 93 push r28 - 838: cd b7 in r28, 0x3d ; 61 - 83a: de b7 in r29, 0x3e ; 62 - 83c: 60 97 sbiw r28, 0x10 ; 16 - 83e: 0f b6 in r0, 0x3f ; 63 - 840: f8 94 cli - 842: de bf out 0x3e, r29 ; 62 - 844: 0f be out 0x3f, r0 ; 63 - 846: cd bf out 0x3d, r28 ; 61 + 824: cf 92 push r12 + 826: df 92 push r13 + 828: ef 92 push r14 + 82a: ff 92 push r15 + 82c: 0f 93 push r16 + 82e: 1f 93 push r17 + 830: df 93 push r29 + 832: cf 93 push r28 + 834: cd b7 in r28, 0x3d ; 61 + 836: de b7 in r29, 0x3e ; 62 + 838: 60 97 sbiw r28, 0x10 ; 16 + 83a: 0f b6 in r0, 0x3f ; 63 + 83c: f8 94 cli + 83e: de bf out 0x3e, r29 ; 62 + 840: 0f be out 0x3f, r0 ; 63 + 842: cd bf out 0x3d, r28 ; 61 char dummy; uint8_t field_val = 0; SetupHardware(); - 848: c5 de rcall .-630 ; 0x5d4 + 844: c7 de rcall .-626 ; 0x5d4 RingBuffer_InitBuffer(&USBtoUSART_Buffer, USBtoUSART_Buffer_Data, sizeof(USBtoUSART_Buffer_Data)); - 84a: 82 e6 ldi r24, 0x62 ; 98 - 84c: 91 e0 ldi r25, 0x01 ; 1 - 84e: 6e e6 ldi r22, 0x6E ; 110 - 850: 71 e0 ldi r23, 0x01 ; 1 - 852: c2 dc rcall .-1660 ; 0x1d8 + 846: 82 e6 ldi r24, 0x62 ; 98 + 848: 91 e0 ldi r25, 0x01 ; 1 + 84a: 6e e6 ldi r22, 0x6E ; 110 + 84c: 71 e0 ldi r23, 0x01 ; 1 + 84e: c4 dc rcall .-1656 ; 0x1d8 RingBuffer_InitBuffer(&USARTtoUSB_Buffer, USARTtoUSB_Buffer_Data, sizeof(USARTtoUSB_Buffer_Data)); - 854: 8e ee ldi r24, 0xEE ; 238 - 856: 91 e0 ldi r25, 0x01 ; 1 - 858: 6a ef ldi r22, 0xFA ; 250 - 85a: 71 e0 ldi r23, 0x01 ; 1 - 85c: bd dc rcall .-1670 ; 0x1d8 + 850: 8e ee ldi r24, 0xEE ; 238 + 852: 91 e0 ldi r25, 0x01 ; 1 + 854: 6a ef ldi r22, 0xFA ; 250 + 856: 71 e0 ldi r23, 0x01 ; 1 + 858: bf dc rcall .-1666 ; 0x1d8 static inline void GlobalInterruptEnable(void) { GCC_MEMORY_BARRIER(); #if (ARCH == ARCH_AVR8) sei(); - 85e: 78 94 sei + 85a: 78 94 sei // LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); GlobalInterruptEnable(); touchpad_init(); // you need to call this to setup the I/O pin! - 860: fd dd rcall .-1030 ; 0x45c - 862: 8f ef ldi r24, 0xFF ; 255 - 864: 99 e6 ldi r25, 0x69 ; 105 - 866: a8 e1 ldi r26, 0x18 ; 24 - 868: 81 50 subi r24, 0x01 ; 1 - 86a: 90 40 sbci r25, 0x00 ; 0 - 86c: a0 40 sbci r26, 0x00 ; 0 - 86e: e1 f7 brne .-8 ; 0x868 - 870: 00 c0 rjmp .+0 ; 0x872 - 872: 00 00 nop + 85c: ff dd rcall .-1026 ; 0x45c + 85e: 8f ef ldi r24, 0xFF ; 255 + 860: 99 e6 ldi r25, 0x69 ; 105 + 862: a8 e1 ldi r26, 0x18 ; 24 + 864: 81 50 subi r24, 0x01 ; 1 + 866: 90 40 sbci r25, 0x00 ; 0 + 868: a0 40 sbci r26, 0x00 ; 0 + 86a: e1 f7 brne .-8 ; 0x864 + 86c: 00 c0 rjmp .+0 ; 0x86e + 86e: 00 00 nop _delay_ms(500); sei(); - 874: 78 94 sei + 870: 78 94 sei // ------------------------- // | left | down | right | // ------------------------- // uart_puts("you selected the keypad demo modus:\n\r"); touchpad_set_abs_mode(); // keypad functionality uses the "absolute mode" - 876: 03 de rcall .-1018 ; 0x47e + 872: 05 de rcall .-1014 ; 0x47e // end of keypad mode demo block // // #elif DEMO_MODE == ABSOLUTE_MODE // begin of keypad mode demo block // uart_puts("you selected the absolute position demo modus:\n\r"); touchpad_set_abs_mode();// tell the touchpad you want to use it in the "absolute mode" - 878: 02 de rcall .-1020 ; 0x47e + 874: 04 de rcall .-1016 ; 0x47e } // end of absolute mode demo block // // #elif DEMO_MODE == RELATIVE_MODE // begin of relative mode demo block uart_puts("you selected the relative position demo modus:\n\r"); - 87a: 80 e0 ldi r24, 0x00 ; 0 - 87c: 91 e0 ldi r25, 0x01 ; 1 - 87e: 59 df rcall .-334 ; 0x732 + 876: 80 e0 ldi r24, 0x00 ; 0 + 878: 91 e0 ldi r25, 0x01 ; 1 + 87a: 5b df rcall .-330 ; 0x732 touchpad_set_rel_mode_100dpi();// use touchpad in relative mode - 880: 1c de rcall .-968 ; 0x4ba + 87c: 1e de rcall .-964 ; 0x4ba // touchpad_set_rel_mode_200dpi(); // uncomment this line if you want double resolution uint8_t x, y = 0; - 882: dd 24 eor r13, r13 + 87e: dd 24 eor r13, r13 } else { y = (y + dy); } uart_puts("x_pos: "); my_uitoa(x, stringbuffer, 4); - 884: 8e 01 movw r16, r28 - 886: 0f 5f subi r16, 0xFF ; 255 - 888: 1f 4f sbci r17, 0xFF ; 255 + 880: 8e 01 movw r16, r28 + 882: 0f 5f subi r16, 0xFF ; 255 + 884: 1f 4f sbci r17, 0xFF ; 255 // #elif DEMO_MODE == RELATIVE_MODE // begin of relative mode demo block uart_puts("you selected the relative position demo modus:\n\r"); touchpad_set_rel_mode_100dpi();// use touchpad in relative mode // touchpad_set_rel_mode_200dpi(); // uncomment this line if you want double resolution uint8_t x, y = 0; - 88a: ee 24 eor r14, r14 - 88c: ff 24 eor r15, r15 + 886: ee 24 eor r14, r14 + 888: ff 24 eor r15, r15 int8_t dx, dy = 0; while (1) { Usb2SerialTask(); - 88e: 49 de rcall .-878 ; 0x522 + 88a: 4b de rcall .-874 ; 0x522 loopcounter++; - 890: 08 94 sec - 892: e1 1c adc r14, r1 - 894: f1 1c adc r15, r1 + 88c: 08 94 sec + 88e: e1 1c adc r14, r1 + 890: f1 1c adc r15, r1 if(loopcounter<2000) { - 896: 90 ed ldi r25, 0xD0 ; 208 - 898: e9 16 cp r14, r25 - 89a: 97 e0 ldi r25, 0x07 ; 7 - 89c: f9 06 cpc r15, r25 - 89e: b9 f7 brne .-18 ; 0x88e + 892: 90 ed ldi r25, 0xD0 ; 208 + 894: e9 16 cp r14, r25 + 896: 97 e0 ldi r25, 0x07 ; 7 + 898: f9 06 cpc r15, r25 + 89a: b9 f7 brne .-18 ; 0x88a continue; } loopcounter=0; touchpad_read(); // read data from touchpad - 8a0: e5 dd rcall .-1078 ; 0x46c + 89c: e7 dd rcall .-1074 ; 0x46c dx = delta_x();// returns the amount your finger has moved in x direction since last readout - 8a2: 2f de rcall .-930 ; 0x502 - 8a4: e8 2e mov r14, r24 + 89e: 31 de rcall .-926 ; 0x502 + 8a0: e8 2e mov r14, r24 dy = delta_y();// returns the amount your finger has moved in y direction since last readout - 8a6: 1d de rcall .-966 ; 0x4e2 + 8a2: 1f de rcall .-962 ; 0x4e2 // increment/decrement some dummy variables with the if (x + dx > 255) { - 8a8: 2e 2d mov r18, r14 - 8aa: 33 27 eor r19, r19 - 8ac: 27 fd sbrc r18, 7 - 8ae: 30 95 com r19 - 8b0: 2c 0d add r18, r12 - 8b2: 31 1d adc r19, r1 - 8b4: 2f 3f cpi r18, 0xFF ; 255 - 8b6: 31 05 cpc r19, r1 - 8b8: 09 f0 breq .+2 ; 0x8bc - 8ba: 24 f4 brge .+8 ; 0x8c4 + 8a4: 2e 2d mov r18, r14 + 8a6: 33 27 eor r19, r19 + 8a8: 27 fd sbrc r18, 7 + 8aa: 30 95 com r19 + 8ac: 2c 0d add r18, r12 + 8ae: 31 1d adc r19, r1 + 8b0: 2f 3f cpi r18, 0xFF ; 255 + 8b2: 31 05 cpc r19, r1 + 8b4: 09 f0 breq .+2 ; 0x8b8 + 8b6: 24 f4 brge .+8 ; 0x8c0 x = 255; } else if (x + dx < 0) { - 8bc: 37 fd sbrc r19, 7 - 8be: 05 c0 rjmp .+10 ; 0x8ca + 8b8: 37 fd sbrc r19, 7 + 8ba: 05 c0 rjmp .+10 ; 0x8c6 x = 0; } else { x = (x + dx); - 8c0: ce 0c add r12, r14 - 8c2: 04 c0 rjmp .+8 ; 0x8cc + 8bc: ce 0c add r12, r14 + 8be: 04 c0 rjmp .+8 ; 0x8c8 dx = delta_x();// returns the amount your finger has moved in x direction since last readout dy = delta_y();// returns the amount your finger has moved in y direction since last readout // increment/decrement some dummy variables with the if (x + dx > 255) { x = 255; - 8c4: cc 24 eor r12, r12 - 8c6: ca 94 dec r12 - 8c8: 01 c0 rjmp .+2 ; 0x8cc + 8c0: cc 24 eor r12, r12 + 8c2: ca 94 dec r12 + 8c4: 01 c0 rjmp .+2 ; 0x8c8 } else if (x + dx < 0) { x = 0; - 8ca: cc 24 eor r12, r12 + 8c6: cc 24 eor r12, r12 } else { x = (x + dx); } if (y + dy > 255) { - 8cc: 28 2f mov r18, r24 - 8ce: 33 27 eor r19, r19 - 8d0: 27 fd sbrc r18, 7 - 8d2: 30 95 com r19 - 8d4: 2d 0d add r18, r13 - 8d6: 31 1d adc r19, r1 - 8d8: 2f 3f cpi r18, 0xFF ; 255 - 8da: 31 05 cpc r19, r1 - 8dc: 09 f0 breq .+2 ; 0x8e0 - 8de: 24 f4 brge .+8 ; 0x8e8 + 8c8: 28 2f mov r18, r24 + 8ca: 33 27 eor r19, r19 + 8cc: 27 fd sbrc r18, 7 + 8ce: 30 95 com r19 + 8d0: 2d 0d add r18, r13 + 8d2: 31 1d adc r19, r1 + 8d4: 2f 3f cpi r18, 0xFF ; 255 + 8d6: 31 05 cpc r19, r1 + 8d8: 09 f0 breq .+2 ; 0x8dc + 8da: 24 f4 brge .+8 ; 0x8e4 y = 255; } else if (y + dy < 0) { - 8e0: 37 fd sbrc r19, 7 - 8e2: 05 c0 rjmp .+10 ; 0x8ee + 8dc: 37 fd sbrc r19, 7 + 8de: 05 c0 rjmp .+10 ; 0x8ea y = 0; } else { y = (y + dy); - 8e4: d8 0e add r13, r24 - 8e6: 04 c0 rjmp .+8 ; 0x8f0 + 8e0: d8 0e add r13, r24 + 8e2: 04 c0 rjmp .+8 ; 0x8ec } else { x = (x + dx); } if (y + dy > 255) { y = 255; - 8e8: dd 24 eor r13, r13 - 8ea: da 94 dec r13 - 8ec: 01 c0 rjmp .+2 ; 0x8f0 + 8e4: dd 24 eor r13, r13 + 8e6: da 94 dec r13 + 8e8: 01 c0 rjmp .+2 ; 0x8ec } else if (y + dy < 0) { y = 0; - 8ee: dd 24 eor r13, r13 + 8ea: dd 24 eor r13, r13 } else { y = (y + dy); } uart_puts("x_pos: "); - 8f0: 81 e3 ldi r24, 0x31 ; 49 - 8f2: 91 e0 ldi r25, 0x01 ; 1 - 8f4: 1e df rcall .-452 ; 0x732 + 8ec: 81 e3 ldi r24, 0x31 ; 49 + 8ee: 91 e0 ldi r25, 0x01 ; 1 + 8f0: 20 df rcall .-448 ; 0x732 my_uitoa(x, stringbuffer, 4); - 8f6: 6c 2d mov r22, r12 - 8f8: 70 e0 ldi r23, 0x00 ; 0 - 8fa: 80 e0 ldi r24, 0x00 ; 0 - 8fc: 90 e0 ldi r25, 0x00 ; 0 - 8fe: a8 01 movw r20, r16 - 900: 24 e0 ldi r18, 0x04 ; 4 - 902: 2a df rcall .-428 ; 0x758 + 8f2: 6c 2d mov r22, r12 + 8f4: 70 e0 ldi r23, 0x00 ; 0 + 8f6: 80 e0 ldi r24, 0x00 ; 0 + 8f8: 90 e0 ldi r25, 0x00 ; 0 + 8fa: a8 01 movw r20, r16 + 8fc: 24 e0 ldi r18, 0x04 ; 4 + 8fe: 2c df rcall .-424 ; 0x758 uart_puts(stringbuffer); - 904: c8 01 movw r24, r16 - 906: 15 df rcall .-470 ; 0x732 + 900: c8 01 movw r24, r16 + 902: 17 df rcall .-466 ; 0x732 uart_puts(" y_pos: "); - 908: 89 e3 ldi r24, 0x39 ; 57 - 90a: 91 e0 ldi r25, 0x01 ; 1 - 90c: 12 df rcall .-476 ; 0x732 + 904: 89 e3 ldi r24, 0x39 ; 57 + 906: 91 e0 ldi r25, 0x01 ; 1 + 908: 14 df rcall .-472 ; 0x732 my_uitoa(y, stringbuffer, 4); - 90e: 6d 2d mov r22, r13 - 910: 70 e0 ldi r23, 0x00 ; 0 - 912: 80 e0 ldi r24, 0x00 ; 0 - 914: 90 e0 ldi r25, 0x00 ; 0 - 916: a8 01 movw r20, r16 - 918: 24 e0 ldi r18, 0x04 ; 4 - 91a: 1e df rcall .-452 ; 0x758 + 90a: 6d 2d mov r22, r13 + 90c: 70 e0 ldi r23, 0x00 ; 0 + 90e: 80 e0 ldi r24, 0x00 ; 0 + 910: 90 e0 ldi r25, 0x00 ; 0 + 912: a8 01 movw r20, r16 + 914: 24 e0 ldi r18, 0x04 ; 4 + 916: 20 df rcall .-448 ; 0x758 uart_puts(stringbuffer); - 91c: c8 01 movw r24, r16 - 91e: 09 df rcall .-494 ; 0x732 + 918: c8 01 movw r24, r16 + 91a: 0b df rcall .-490 ; 0x732 uart_puts("\r"); - 920: 83 e4 ldi r24, 0x43 ; 67 - 922: 91 e0 ldi r25, 0x01 ; 1 - 924: 06 df rcall .-500 ; 0x732 - 926: b1 cf rjmp .-158 ; 0x88a + 91c: 83 e4 ldi r24, 0x43 ; 67 + 91e: 91 e0 ldi r25, 0x01 ; 1 + 920: 08 df rcall .-496 ; 0x732 + 922: b1 cf rjmp .-158 ; 0x886 -00000928 : +00000924 : const uint8_t DescriptorNumber = (wValue & 0xFF); const void* Address = NULL; uint16_t Size = NO_DESCRIPTOR; switch (DescriptorType) - 928: 92 30 cpi r25, 0x02 ; 2 - 92a: 29 f0 breq .+10 ; 0x936 - 92c: 93 30 cpi r25, 0x03 ; 3 - 92e: 41 f0 breq .+16 ; 0x940 - 930: 91 30 cpi r25, 0x01 ; 1 - 932: e9 f4 brne .+58 ; 0x96e - 934: 17 c0 rjmp .+46 ; 0x964 + 924: 92 30 cpi r25, 0x02 ; 2 + 926: 29 f0 breq .+10 ; 0x932 + 928: 93 30 cpi r25, 0x03 ; 3 + 92a: 41 f0 breq .+16 ; 0x93c + 92c: 91 30 cpi r25, 0x01 ; 1 + 92e: e9 f4 brne .+58 ; 0x96a + 930: 17 c0 rjmp .+46 ; 0x960 Address = &DeviceDescriptor; Size = sizeof(USB_Descriptor_Device_t); break; case DTYPE_Configuration: Address = &ConfigurationDescriptor; Size = sizeof(USB_Descriptor_Configuration_t); - 936: 2e e3 ldi r18, 0x3E ; 62 - 938: 30 e0 ldi r19, 0x00 ; 0 + 932: 2e e3 ldi r18, 0x3E ; 62 + 934: 30 e0 ldi r19, 0x00 ; 0 case DTYPE_Device: Address = &DeviceDescriptor; Size = sizeof(USB_Descriptor_Device_t); break; case DTYPE_Configuration: Address = &ConfigurationDescriptor; - 93a: ea ea ldi r30, 0xAA ; 170 - 93c: f0 e0 ldi r31, 0x00 ; 0 + 936: ea ea ldi r30, 0xAA ; 170 + 938: f0 e0 ldi r31, 0x00 ; 0 Size = sizeof(USB_Descriptor_Configuration_t); break; - 93e: 1b c0 rjmp .+54 ; 0x976 + 93a: 1b c0 rjmp .+54 ; 0x972 case DTYPE_String: switch (DescriptorNumber) + 93c: 81 30 cpi r24, 0x01 ; 1 + 93e: 41 f0 breq .+16 ; 0x950 940: 81 30 cpi r24, 0x01 ; 1 - 942: 41 f0 breq .+16 ; 0x954 - 944: 81 30 cpi r24, 0x01 ; 1 - 946: 18 f0 brcs .+6 ; 0x94e - 948: 82 30 cpi r24, 0x02 ; 2 - 94a: 89 f4 brne .+34 ; 0x96e - 94c: 06 c0 rjmp .+12 ; 0x95a + 942: 18 f0 brcs .+6 ; 0x94a + 944: 82 30 cpi r24, 0x02 ; 2 + 946: 89 f4 brne .+34 ; 0x96a + 948: 06 c0 rjmp .+12 ; 0x956 { case 0x00: Address = &LanguageString; Size = pgm_read_byte(&LanguageString.Header.Size); - 94e: e8 ee ldi r30, 0xE8 ; 232 - 950: f0 e0 ldi r31, 0x00 ; 0 - 952: 05 c0 rjmp .+10 ; 0x95e + 94a: e8 ee ldi r30, 0xE8 ; 232 + 94c: f0 e0 ldi r31, 0x00 ; 0 + 94e: 05 c0 rjmp .+10 ; 0x95a break; case 0x01: Address = &ManufacturerString; Size = pgm_read_byte(&ManufacturerString.Header.Size); - 954: ec ee ldi r30, 0xEC ; 236 - 956: f0 e0 ldi r31, 0x00 ; 0 - 958: 02 c0 rjmp .+4 ; 0x95e + 950: ec ee ldi r30, 0xEC ; 236 + 952: f0 e0 ldi r31, 0x00 ; 0 + 954: 02 c0 rjmp .+4 ; 0x95a break; case 0x02: Address = &ProductString; Size = pgm_read_byte(&ProductString.Header.Size); - 95a: e6 e0 ldi r30, 0x06 ; 6 - 95c: f1 e0 ldi r31, 0x01 ; 1 - 95e: 24 91 lpm r18, Z+ - 960: 30 e0 ldi r19, 0x00 ; 0 + 956: e6 e0 ldi r30, 0x06 ; 6 + 958: f1 e0 ldi r31, 0x01 ; 1 + 95a: 24 91 lpm r18, Z+ + 95c: 30 e0 ldi r19, 0x00 ; 0 break; - 962: 09 c0 rjmp .+18 ; 0x976 + 95e: 09 c0 rjmp .+18 ; 0x972 switch (DescriptorType) { case DTYPE_Device: Address = &DeviceDescriptor; Size = sizeof(USB_Descriptor_Device_t); - 964: 22 e1 ldi r18, 0x12 ; 18 - 966: 30 e0 ldi r19, 0x00 ; 0 + 960: 22 e1 ldi r18, 0x12 ; 18 + 962: 30 e0 ldi r19, 0x00 ; 0 uint16_t Size = NO_DESCRIPTOR; switch (DescriptorType) { case DTYPE_Device: Address = &DeviceDescriptor; - 968: e8 e9 ldi r30, 0x98 ; 152 - 96a: f0 e0 ldi r31, 0x00 ; 0 - 96c: 04 c0 rjmp .+8 ; 0x976 + 964: e8 e9 ldi r30, 0x98 ; 152 + 966: f0 e0 ldi r31, 0x00 ; 0 + 968: 04 c0 rjmp .+8 ; 0x972 { const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorNumber = (wValue & 0xFF); const void* Address = NULL; uint16_t Size = NO_DESCRIPTOR; - 96e: 20 e0 ldi r18, 0x00 ; 0 - 970: 30 e0 ldi r19, 0x00 ; 0 + 96a: 20 e0 ldi r18, 0x00 ; 0 + 96c: 30 e0 ldi r19, 0x00 ; 0 const void** const DescriptorAddress) { const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorNumber = (wValue & 0xFF); const void* Address = NULL; - 972: e0 e0 ldi r30, 0x00 ; 0 - 974: f0 e0 ldi r31, 0x00 ; 0 + 96e: e0 e0 ldi r30, 0x00 ; 0 + 970: f0 e0 ldi r31, 0x00 ; 0 } break; } *DescriptorAddress = Address; - 976: da 01 movw r26, r20 - 978: 11 96 adiw r26, 0x01 ; 1 - 97a: fc 93 st X, r31 - 97c: ee 93 st -X, r30 + 972: da 01 movw r26, r20 + 974: 11 96 adiw r26, 0x01 ; 1 + 976: fc 93 st X, r31 + 978: ee 93 st -X, r30 return Size; } - 97e: c9 01 movw r24, r18 - 980: 08 95 ret + 97a: c9 01 movw r24, r18 + 97c: 08 95 ret -00000982 : +0000097e : #if defined(TEMPLATE_FUNC_NAME) uint8_t TEMPLATE_FUNC_NAME (const void* const Buffer, uint16_t Length) { uint8_t* DataStream = ((uint8_t*)Buffer + TEMPLATE_BUFFER_OFFSET(Length)); - 982: 28 2f mov r18, r24 - 984: 39 2f mov r19, r25 - 986: f9 01 movw r30, r18 + 97e: 28 2f mov r18, r24 + 980: 39 2f mov r19, r25 + 982: f9 01 movw r30, r18 bool LastPacketFull = false; if (Length > USB_ControlRequest.wLength) - 988: 80 91 94 02 lds r24, 0x0294 - 98c: 90 91 95 02 lds r25, 0x0295 - 990: 86 17 cp r24, r22 - 992: 97 07 cpc r25, r23 - 994: 18 f4 brcc .+6 ; 0x99c - 996: bc 01 movw r22, r24 - 998: 20 e0 ldi r18, 0x00 ; 0 - 99a: 34 c0 rjmp .+104 ; 0xa04 + 984: 80 91 95 02 lds r24, 0x0295 + 988: 90 91 96 02 lds r25, 0x0296 + 98c: 86 17 cp r24, r22 + 98e: 97 07 cpc r25, r23 + 990: 18 f4 brcc .+6 ; 0x998 + 992: bc 01 movw r22, r24 + 994: 20 e0 ldi r18, 0x00 ; 0 + 996: 35 c0 rjmp .+106 ; 0xa02 Length = USB_ControlRequest.wLength; else if (!(Length)) - 99c: 61 15 cp r22, r1 - 99e: 71 05 cpc r23, r1 - 9a0: d9 f7 brne .-10 ; 0x998 + 998: 61 15 cp r22, r1 + 99a: 71 05 cpc r23, r1 + 99c: d9 f7 brne .-10 ; 0x994 */ static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE; static inline void Endpoint_ClearIN(void) { #if !defined(CONTROL_ONLY_DEVICE) UEINTX &= ~((1 << TXINI) | (1 << FIFOCON)); - 9a2: 80 91 e8 00 lds r24, 0x00E8 - 9a6: 8e 77 andi r24, 0x7E ; 126 - 9a8: 80 93 e8 00 sts 0x00E8, r24 - 9ac: f5 cf rjmp .-22 ; 0x998 + 99e: 80 91 e8 00 lds r24, 0x00E8 + 9a2: 8e 77 andi r24, 0x7E ; 126 + 9a4: 80 93 e8 00 sts 0x00E8, r24 + 9a8: f5 cf rjmp .-22 ; 0x994 Endpoint_ClearIN(); while (Length || LastPacketFull) { uint8_t USB_DeviceState_LCL = USB_DeviceState; - 9ae: 8e b3 in r24, 0x1e ; 30 + 9aa: 80 91 8e 02 lds r24, 0x028E if (USB_DeviceState_LCL == DEVICE_STATE_Unattached) - 9b0: 88 23 and r24, r24 - 9b2: e9 f1 breq .+122 ; 0xa2e + 9ae: 88 23 and r24, r24 + 9b0: f1 f1 breq .+124 ; 0xa2e return ENDPOINT_RWCSTREAM_DeviceDisconnected; else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended) - 9b4: 85 30 cpi r24, 0x05 ; 5 - 9b6: b9 f1 breq .+110 ; 0xa26 + 9b2: 85 30 cpi r24, 0x05 ; 5 + 9b4: c1 f1 breq .+112 ; 0xa26 * \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise. */ static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; static inline bool Endpoint_IsSETUPReceived(void) { return ((UEINTX & (1 << RXSTPI)) ? true : false); - 9b8: 80 91 e8 00 lds r24, 0x00E8 + 9b6: 80 91 e8 00 lds r24, 0x00E8 return ENDPOINT_RWCSTREAM_BusSuspended; else if (Endpoint_IsSETUPReceived()) - 9bc: 83 fd sbrc r24, 3 - 9be: 35 c0 rjmp .+106 ; 0xa2a + 9ba: 83 fd sbrc r24, 3 + 9bc: 36 c0 rjmp .+108 ; 0xa2a * \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise. */ static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; static inline bool Endpoint_IsOUTReceived(void) { return ((UEINTX & (1 << RXOUTI)) ? true : false); - 9c0: 80 91 e8 00 lds r24, 0x00E8 + 9be: 80 91 e8 00 lds r24, 0x00E8 return ENDPOINT_RWCSTREAM_HostAborted; else if (Endpoint_IsOUTReceived()) - 9c4: 82 fd sbrc r24, 2 - 9c6: 29 c0 rjmp .+82 ; 0xa1a + 9c2: 82 fd sbrc r24, 2 + 9c4: 2a c0 rjmp .+84 ; 0xa1a * \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise. */ static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; static inline bool Endpoint_IsINReady(void) { return ((UEINTX & (1 << TXINI)) ? true : false); - 9c8: 80 91 e8 00 lds r24, 0x00E8 + 9c6: 80 91 e8 00 lds r24, 0x00E8 break; if (Endpoint_IsINReady()) - 9cc: 80 ff sbrs r24, 0 - 9ce: 1a c0 rjmp .+52 ; 0xa04 + 9ca: 80 ff sbrs r24, 0 + 9cc: 1a c0 rjmp .+52 ; 0xa02 #if (defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)) return UEBCX; #elif defined(USB_SERIES_4_AVR) return (((uint16_t)UEBCHX << 8) | UEBCLX); #elif defined(USB_SERIES_2_AVR) return UEBCLX; - 9d0: 80 91 f2 00 lds r24, 0x00F2 - 9d4: 90 e0 ldi r25, 0x00 ; 0 + 9ce: 80 91 f2 00 lds r24, 0x00F2 + 9d2: 90 e0 ldi r25, 0x00 ; 0 { uint16_t BytesInEndpoint = Endpoint_BytesInEndpoint(); while (Length && (BytesInEndpoint < USB_Device_ControlEndpointSize)) - 9d6: 06 c0 rjmp .+12 ; 0x9e4 + 9d4: 06 c0 rjmp .+12 ; 0x9e2 { TEMPLATE_TRANSFER_BYTE(DataStream); - 9d8: 21 91 ld r18, Z+ + 9d6: 21 91 ld r18, Z+ * \param[in] Data Data to write into the the currently selected endpoint's FIFO buffer. */ static inline void Endpoint_Write_8(const uint8_t Data) ATTR_ALWAYS_INLINE; static inline void Endpoint_Write_8(const uint8_t Data) { UEDATX = Data; - 9da: 20 93 f1 00 sts 0x00F1, r18 + 9d8: 20 93 f1 00 sts 0x00F1, r18 TEMPLATE_BUFFER_MOVE(DataStream, 1); Length--; - 9de: 61 50 subi r22, 0x01 ; 1 - 9e0: 70 40 sbci r23, 0x00 ; 0 + 9dc: 61 50 subi r22, 0x01 ; 1 + 9de: 70 40 sbci r23, 0x00 ; 0 BytesInEndpoint++; - 9e2: 01 96 adiw r24, 0x01 ; 1 + 9e0: 01 96 adiw r24, 0x01 ; 1 if (Endpoint_IsINReady()) { uint16_t BytesInEndpoint = Endpoint_BytesInEndpoint(); while (Length && (BytesInEndpoint < USB_Device_ControlEndpointSize)) - 9e4: 61 15 cp r22, r1 - 9e6: 71 05 cpc r23, r1 - 9e8: 19 f0 breq .+6 ; 0x9f0 - 9ea: 88 30 cpi r24, 0x08 ; 8 - 9ec: 91 05 cpc r25, r1 - 9ee: a0 f3 brcs .-24 ; 0x9d8 + 9e2: 61 15 cp r22, r1 + 9e4: 71 05 cpc r23, r1 + 9e6: 19 f0 breq .+6 ; 0x9ee + 9e8: 88 30 cpi r24, 0x08 ; 8 + 9ea: 91 05 cpc r25, r1 + 9ec: a0 f3 brcs .-24 ; 0x9d6 TEMPLATE_BUFFER_MOVE(DataStream, 1); Length--; BytesInEndpoint++; } LastPacketFull = (BytesInEndpoint == USB_Device_ControlEndpointSize); - 9f0: 21 e0 ldi r18, 0x01 ; 1 - 9f2: 88 30 cpi r24, 0x08 ; 8 - 9f4: 91 05 cpc r25, r1 - 9f6: 09 f0 breq .+2 ; 0x9fa - 9f8: 20 e0 ldi r18, 0x00 ; 0 + 9ee: 21 e0 ldi r18, 0x01 ; 1 + 9f0: 88 30 cpi r24, 0x08 ; 8 + 9f2: 91 05 cpc r25, r1 + 9f4: 09 f0 breq .+2 ; 0x9f8 + 9f6: 20 e0 ldi r18, 0x00 ; 0 */ static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE; static inline void Endpoint_ClearIN(void) { #if !defined(CONTROL_ONLY_DEVICE) UEINTX &= ~((1 << TXINI) | (1 << FIFOCON)); - 9fa: 80 91 e8 00 lds r24, 0x00E8 - 9fe: 8e 77 andi r24, 0x7E ; 126 - a00: 80 93 e8 00 sts 0x00E8, r24 + 9f8: 80 91 e8 00 lds r24, 0x00E8 + 9fc: 8e 77 andi r24, 0x7E ; 126 + 9fe: 80 93 e8 00 sts 0x00E8, r24 if (Length > USB_ControlRequest.wLength) Length = USB_ControlRequest.wLength; else if (!(Length)) Endpoint_ClearIN(); while (Length || LastPacketFull) - a04: 61 15 cp r22, r1 - a06: 71 05 cpc r23, r1 - a08: 91 f6 brne .-92 ; 0x9ae - a0a: 22 23 and r18, r18 - a0c: 81 f6 brne .-96 ; 0x9ae - a0e: 05 c0 rjmp .+10 ; 0xa1a + a02: 61 15 cp r22, r1 + a04: 71 05 cpc r23, r1 + a06: 89 f6 brne .-94 ; 0x9aa + a08: 22 23 and r18, r18 + a0a: 79 f6 brne .-98 ; 0x9aa + a0c: 06 c0 rjmp .+12 ; 0xa1a } } while (!(Endpoint_IsOUTReceived())) { uint8_t USB_DeviceState_LCL = USB_DeviceState; - a10: 8e b3 in r24, 0x1e ; 30 + a0e: 80 91 8e 02 lds r24, 0x028E if (USB_DeviceState_LCL == DEVICE_STATE_Unattached) a12: 88 23 and r24, r24 - a14: 61 f0 breq .+24 ; 0xa2e + a14: 61 f0 breq .+24 ; 0xa2e return ENDPOINT_RWCSTREAM_DeviceDisconnected; else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended) a16: 85 30 cpi r24, 0x05 ; 5 - a18: 61 f0 breq .+24 ; 0xa32 + a18: 61 f0 breq .+24 ; 0xa32 * \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise. */ static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; @@ -2309,7 +2309,7 @@ uint8_t TEMPLATE_FUNC_NAME (const void* const Buffer, while (!(Endpoint_IsOUTReceived())) a1e: 82 ff sbrs r24, 2 - a20: f7 cf rjmp .-18 ; 0xa10 + a20: f6 cf rjmp .-20 ; 0xa0e return ENDPOINT_RWCSTREAM_DeviceDisconnected; else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended) return ENDPOINT_RWCSTREAM_BusSuspended; @@ -2359,14 +2359,14 @@ uint8_t TEMPLATE_FUNC_NAME (const void* const Buffer, bool LastPacketFull = false; if (Length > USB_ControlRequest.wLength) - a3a: 80 91 94 02 lds r24, 0x0294 - a3e: 90 91 95 02 lds r25, 0x0295 + a3a: 80 91 95 02 lds r24, 0x0295 + a3e: 90 91 96 02 lds r25, 0x0296 a42: 86 17 cp r24, r22 a44: 97 07 cpc r25, r23 a46: 18 f4 brcc .+6 ; 0xa4e a48: bc 01 movw r22, r24 a4a: 20 e0 ldi r18, 0x00 ; 0 - a4c: 36 c0 rjmp .+108 ; 0xaba + a4c: 37 c0 rjmp .+110 ; 0xabc Length = USB_ControlRequest.wLength; else if (!(Length)) a4e: 61 15 cp r22, r1 @@ -2387,3419 +2387,3307 @@ uint8_t TEMPLATE_FUNC_NAME (const void* const Buffer, while (Length || LastPacketFull) { uint8_t USB_DeviceState_LCL = USB_DeviceState; - a60: 8e b3 in r24, 0x1e ; 30 + a60: 80 91 8e 02 lds r24, 0x028E if (USB_DeviceState_LCL == DEVICE_STATE_Unattached) - a62: 88 23 and r24, r24 - a64: 09 f4 brne .+2 ; 0xa68 - a66: 3e c0 rjmp .+124 ; 0xae4 + a64: 88 23 and r24, r24 + a66: 09 f4 brne .+2 ; 0xa6a + a68: 3f c0 rjmp .+126 ; 0xae8 return ENDPOINT_RWCSTREAM_DeviceDisconnected; else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended) - a68: 85 30 cpi r24, 0x05 ; 5 - a6a: c1 f1 breq .+112 ; 0xadc + a6a: 85 30 cpi r24, 0x05 ; 5 + a6c: c9 f1 breq .+114 ; 0xae0 * \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise. */ static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; static inline bool Endpoint_IsSETUPReceived(void) { return ((UEINTX & (1 << RXSTPI)) ? true : false); - a6c: 80 91 e8 00 lds r24, 0x00E8 + a6e: 80 91 e8 00 lds r24, 0x00E8 return ENDPOINT_RWCSTREAM_BusSuspended; else if (Endpoint_IsSETUPReceived()) - a70: 83 fd sbrc r24, 3 - a72: 36 c0 rjmp .+108 ; 0xae0 + a72: 83 fd sbrc r24, 3 + a74: 37 c0 rjmp .+110 ; 0xae4 * \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise. */ static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; static inline bool Endpoint_IsOUTReceived(void) { return ((UEINTX & (1 << RXOUTI)) ? true : false); - a74: 80 91 e8 00 lds r24, 0x00E8 + a76: 80 91 e8 00 lds r24, 0x00E8 return ENDPOINT_RWCSTREAM_HostAborted; else if (Endpoint_IsOUTReceived()) - a78: 82 fd sbrc r24, 2 - a7a: 2a c0 rjmp .+84 ; 0xad0 + a7a: 82 fd sbrc r24, 2 + a7c: 2b c0 rjmp .+86 ; 0xad4 * \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise. */ static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; static inline bool Endpoint_IsINReady(void) { return ((UEINTX & (1 << TXINI)) ? true : false); - a7c: 80 91 e8 00 lds r24, 0x00E8 + a7e: 80 91 e8 00 lds r24, 0x00E8 break; if (Endpoint_IsINReady()) - a80: 80 ff sbrs r24, 0 - a82: 1b c0 rjmp .+54 ; 0xaba + a82: 80 ff sbrs r24, 0 + a84: 1b c0 rjmp .+54 ; 0xabc #if (defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)) return UEBCX; #elif defined(USB_SERIES_4_AVR) return (((uint16_t)UEBCHX << 8) | UEBCLX); #elif defined(USB_SERIES_2_AVR) return UEBCLX; - a84: 80 91 f2 00 lds r24, 0x00F2 - a88: 90 e0 ldi r25, 0x00 ; 0 + a86: 80 91 f2 00 lds r24, 0x00F2 + a8a: 90 e0 ldi r25, 0x00 ; 0 { uint16_t BytesInEndpoint = Endpoint_BytesInEndpoint(); while (Length && (BytesInEndpoint < USB_Device_ControlEndpointSize)) - a8a: 07 c0 rjmp .+14 ; 0xa9a + a8c: 07 c0 rjmp .+14 ; 0xa9c { TEMPLATE_TRANSFER_BYTE(DataStream); - a8c: 24 91 lpm r18, Z+ + a8e: 24 91 lpm r18, Z+ * \param[in] Data Data to write into the the currently selected endpoint's FIFO buffer. */ static inline void Endpoint_Write_8(const uint8_t Data) ATTR_ALWAYS_INLINE; static inline void Endpoint_Write_8(const uint8_t Data) { UEDATX = Data; - a8e: 20 93 f1 00 sts 0x00F1, r18 + a90: 20 93 f1 00 sts 0x00F1, r18 TEMPLATE_BUFFER_MOVE(DataStream, 1); - a92: 31 96 adiw r30, 0x01 ; 1 + a94: 31 96 adiw r30, 0x01 ; 1 Length--; - a94: 61 50 subi r22, 0x01 ; 1 - a96: 70 40 sbci r23, 0x00 ; 0 + a96: 61 50 subi r22, 0x01 ; 1 + a98: 70 40 sbci r23, 0x00 ; 0 BytesInEndpoint++; - a98: 01 96 adiw r24, 0x01 ; 1 + a9a: 01 96 adiw r24, 0x01 ; 1 if (Endpoint_IsINReady()) { uint16_t BytesInEndpoint = Endpoint_BytesInEndpoint(); while (Length && (BytesInEndpoint < USB_Device_ControlEndpointSize)) - a9a: 61 15 cp r22, r1 - a9c: 71 05 cpc r23, r1 - a9e: 19 f0 breq .+6 ; 0xaa6 - aa0: 88 30 cpi r24, 0x08 ; 8 - aa2: 91 05 cpc r25, r1 - aa4: 98 f3 brcs .-26 ; 0xa8c + a9c: 61 15 cp r22, r1 + a9e: 71 05 cpc r23, r1 + aa0: 19 f0 breq .+6 ; 0xaa8 + aa2: 88 30 cpi r24, 0x08 ; 8 + aa4: 91 05 cpc r25, r1 + aa6: 98 f3 brcs .-26 ; 0xa8e TEMPLATE_BUFFER_MOVE(DataStream, 1); Length--; BytesInEndpoint++; } LastPacketFull = (BytesInEndpoint == USB_Device_ControlEndpointSize); - aa6: 21 e0 ldi r18, 0x01 ; 1 - aa8: 88 30 cpi r24, 0x08 ; 8 - aaa: 91 05 cpc r25, r1 - aac: 09 f0 breq .+2 ; 0xab0 - aae: 20 e0 ldi r18, 0x00 ; 0 + aa8: 21 e0 ldi r18, 0x01 ; 1 + aaa: 88 30 cpi r24, 0x08 ; 8 + aac: 91 05 cpc r25, r1 + aae: 09 f0 breq .+2 ; 0xab2 + ab0: 20 e0 ldi r18, 0x00 ; 0 */ static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE; static inline void Endpoint_ClearIN(void) { #if !defined(CONTROL_ONLY_DEVICE) UEINTX &= ~((1 << TXINI) | (1 << FIFOCON)); - ab0: 80 91 e8 00 lds r24, 0x00E8 - ab4: 8e 77 andi r24, 0x7E ; 126 - ab6: 80 93 e8 00 sts 0x00E8, r24 + ab2: 80 91 e8 00 lds r24, 0x00E8 + ab6: 8e 77 andi r24, 0x7E ; 126 + ab8: 80 93 e8 00 sts 0x00E8, r24 if (Length > USB_ControlRequest.wLength) Length = USB_ControlRequest.wLength; else if (!(Length)) Endpoint_ClearIN(); while (Length || LastPacketFull) - aba: 61 15 cp r22, r1 - abc: 71 05 cpc r23, r1 - abe: 81 f6 brne .-96 ; 0xa60 - ac0: 22 23 and r18, r18 - ac2: 71 f6 brne .-100 ; 0xa60 - ac4: 05 c0 rjmp .+10 ; 0xad0 + abc: 61 15 cp r22, r1 + abe: 71 05 cpc r23, r1 + ac0: 79 f6 brne .-98 ; 0xa60 + ac2: 22 23 and r18, r18 + ac4: 69 f6 brne .-102 ; 0xa60 + ac6: 06 c0 rjmp .+12 ; 0xad4 } } while (!(Endpoint_IsOUTReceived())) { uint8_t USB_DeviceState_LCL = USB_DeviceState; - ac6: 8e b3 in r24, 0x1e ; 30 + ac8: 80 91 8e 02 lds r24, 0x028E if (USB_DeviceState_LCL == DEVICE_STATE_Unattached) - ac8: 88 23 and r24, r24 - aca: 61 f0 breq .+24 ; 0xae4 + acc: 88 23 and r24, r24 + ace: 61 f0 breq .+24 ; 0xae8 return ENDPOINT_RWCSTREAM_DeviceDisconnected; else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended) - acc: 85 30 cpi r24, 0x05 ; 5 - ace: 61 f0 breq .+24 ; 0xae8 + ad0: 85 30 cpi r24, 0x05 ; 5 + ad2: 61 f0 breq .+24 ; 0xaec * \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise. */ static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; static inline bool Endpoint_IsOUTReceived(void) { return ((UEINTX & (1 << RXOUTI)) ? true : false); - ad0: 80 91 e8 00 lds r24, 0x00E8 + ad4: 80 91 e8 00 lds r24, 0x00E8 LastPacketFull = (BytesInEndpoint == USB_Device_ControlEndpointSize); Endpoint_ClearIN(); } } while (!(Endpoint_IsOUTReceived())) - ad4: 82 ff sbrs r24, 2 - ad6: f7 cf rjmp .-18 ; 0xac6 + ad8: 82 ff sbrs r24, 2 + ada: f6 cf rjmp .-20 ; 0xac8 return ENDPOINT_RWCSTREAM_DeviceDisconnected; else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended) return ENDPOINT_RWCSTREAM_BusSuspended; } return ENDPOINT_RWCSTREAM_NoError; - ad8: 80 e0 ldi r24, 0x00 ; 0 - ada: 08 95 ret + adc: 80 e0 ldi r24, 0x00 ; 0 + ade: 08 95 ret uint8_t USB_DeviceState_LCL = USB_DeviceState; if (USB_DeviceState_LCL == DEVICE_STATE_Unattached) return ENDPOINT_RWCSTREAM_DeviceDisconnected; else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended) return ENDPOINT_RWCSTREAM_BusSuspended; - adc: 83 e0 ldi r24, 0x03 ; 3 - ade: 08 95 ret + ae0: 83 e0 ldi r24, 0x03 ; 3 + ae2: 08 95 ret else if (Endpoint_IsSETUPReceived()) return ENDPOINT_RWCSTREAM_HostAborted; - ae0: 81 e0 ldi r24, 0x01 ; 1 - ae2: 08 95 ret + ae4: 81 e0 ldi r24, 0x01 ; 1 + ae6: 08 95 ret while (!(Endpoint_IsOUTReceived())) { uint8_t USB_DeviceState_LCL = USB_DeviceState; if (USB_DeviceState_LCL == DEVICE_STATE_Unattached) return ENDPOINT_RWCSTREAM_DeviceDisconnected; - ae4: 82 e0 ldi r24, 0x02 ; 2 - ae6: 08 95 ret + ae8: 82 e0 ldi r24, 0x02 ; 2 + aea: 08 95 ret else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended) return ENDPOINT_RWCSTREAM_BusSuspended; - ae8: 83 e0 ldi r24, 0x03 ; 3 + aec: 83 e0 ldi r24, 0x03 ; 3 } return ENDPOINT_RWCSTREAM_NoError; } - aea: 08 95 ret + aee: 08 95 ret -00000aec : +00000af0 : UECFG0X = UECFG0XData; UECFG1X = UECFG1XData; return Endpoint_IsConfigured(); #else for (uint8_t EPNum = Number; EPNum < ENDPOINT_TOTAL_ENDPOINTS; EPNum++) - aec: 98 2f mov r25, r24 - aee: 2c c0 rjmp .+88 ; 0xb48 + af0: 98 2f mov r25, r24 + af2: 2c c0 rjmp .+88 ; 0xb4c */ static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE; static inline void Endpoint_SelectEndpoint(const uint8_t Address) { #if !defined(CONTROL_ONLY_DEVICE) UENUM = (Address & ENDPOINT_EPNUM_MASK); - af0: 29 2f mov r18, r25 - af2: 2f 70 andi r18, 0x0F ; 15 - af4: 20 93 e9 00 sts 0x00E9, r18 + af4: 29 2f mov r18, r25 + af6: 2f 70 andi r18, 0x0F ; 15 + af8: 20 93 e9 00 sts 0x00E9, r18 uint8_t UECFG1XTemp; uint8_t UEIENXTemp; Endpoint_SelectEndpoint(EPNum); if (EPNum == Number) - af8: 98 17 cp r25, r24 - afa: 39 f0 breq .+14 ; 0xb0a + afc: 98 17 cp r25, r24 + afe: 39 f0 breq .+14 ; 0xb0e UECFG1XTemp = UECFG1XData; UEIENXTemp = 0; } else { UECFG0XTemp = UECFG0X; - afc: 70 91 ec 00 lds r23, 0x00EC + b00: 70 91 ec 00 lds r23, 0x00EC UECFG1XTemp = UECFG1X; - b00: 20 91 ed 00 lds r18, 0x00ED + b04: 20 91 ed 00 lds r18, 0x00ED UEIENXTemp = UEIENX; - b04: 50 91 f0 00 lds r21, 0x00F0 - b08: 03 c0 rjmp .+6 ; 0xb10 + b08: 50 91 f0 00 lds r21, 0x00F0 + b0c: 03 c0 rjmp .+6 ; 0xb14 Endpoint_SelectEndpoint(EPNum); if (EPNum == Number) { UECFG0XTemp = UECFG0XData; UECFG1XTemp = UECFG1XData; - b0a: 24 2f mov r18, r20 + b0e: 24 2f mov r18, r20 Endpoint_SelectEndpoint(EPNum); if (EPNum == Number) { UECFG0XTemp = UECFG0XData; - b0c: 76 2f mov r23, r22 + b10: 76 2f mov r23, r22 UECFG1XTemp = UECFG1XData; UEIENXTemp = 0; - b0e: 50 e0 ldi r21, 0x00 ; 0 + b12: 50 e0 ldi r21, 0x00 ; 0 UECFG0XTemp = UECFG0X; UECFG1XTemp = UECFG1X; UEIENXTemp = UEIENX; } if (!(UECFG1XTemp & (1 << ALLOC))) - b10: 21 ff sbrs r18, 1 - b12: 19 c0 rjmp .+50 ; 0xb46 + b14: 21 ff sbrs r18, 1 + b16: 19 c0 rjmp .+50 ; 0xb4a * to and from a host. */ static inline void Endpoint_DisableEndpoint(void) ATTR_ALWAYS_INLINE; static inline void Endpoint_DisableEndpoint(void) { UECONX &= ~(1 << EPEN); - b14: 30 91 eb 00 lds r19, 0x00EB - b18: 3e 7f andi r19, 0xFE ; 254 - b1a: 30 93 eb 00 sts 0x00EB, r19 + b18: 30 91 eb 00 lds r19, 0x00EB + b1c: 3e 7f andi r19, 0xFE ; 254 + b1e: 30 93 eb 00 sts 0x00EB, r19 continue; Endpoint_DisableEndpoint(); UECFG1X &= ~(1 << ALLOC); - b1e: 30 91 ed 00 lds r19, 0x00ED - b22: 3d 7f andi r19, 0xFD ; 253 - b24: 30 93 ed 00 sts 0x00ED, r19 + b22: 30 91 ed 00 lds r19, 0x00ED + b26: 3d 7f andi r19, 0xFD ; 253 + b28: 30 93 ed 00 sts 0x00ED, r19 * \note Endpoints must first be configured properly via \ref Endpoint_ConfigureEndpoint(). */ static inline void Endpoint_EnableEndpoint(void) ATTR_ALWAYS_INLINE; static inline void Endpoint_EnableEndpoint(void) { UECONX |= (1 << EPEN); - b28: 30 91 eb 00 lds r19, 0x00EB - b2c: 31 60 ori r19, 0x01 ; 1 - b2e: 30 93 eb 00 sts 0x00EB, r19 + b2c: 30 91 eb 00 lds r19, 0x00EB + b30: 31 60 ori r19, 0x01 ; 1 + b32: 30 93 eb 00 sts 0x00EB, r19 Endpoint_EnableEndpoint(); UECFG0X = UECFG0XTemp; - b32: 70 93 ec 00 sts 0x00EC, r23 + b36: 70 93 ec 00 sts 0x00EC, r23 UECFG1X = UECFG1XTemp; - b36: 20 93 ed 00 sts 0x00ED, r18 + b3a: 20 93 ed 00 sts 0x00ED, r18 UEIENX = UEIENXTemp; - b3a: 50 93 f0 00 sts 0x00F0, r21 + b3e: 50 93 f0 00 sts 0x00F0, r21 * \return Boolean \c true if the currently selected endpoint has been configured, \c false otherwise. */ static inline bool Endpoint_IsConfigured(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; static inline bool Endpoint_IsConfigured(void) { return ((UESTA0X & (1 << CFGOK)) ? true : false); - b3e: 20 91 ee 00 lds r18, 0x00EE + b42: 20 91 ee 00 lds r18, 0x00EE if (!(Endpoint_IsConfigured())) - b42: 27 ff sbrs r18, 7 - b44: 08 c0 rjmp .+16 ; 0xb56 + b46: 27 ff sbrs r18, 7 + b48: 08 c0 rjmp .+16 ; 0xb5a UECFG0X = UECFG0XData; UECFG1X = UECFG1XData; return Endpoint_IsConfigured(); #else for (uint8_t EPNum = Number; EPNum < ENDPOINT_TOTAL_ENDPOINTS; EPNum++) - b46: 9f 5f subi r25, 0xFF ; 255 - b48: 95 30 cpi r25, 0x05 ; 5 - b4a: 90 f2 brcs .-92 ; 0xaf0 + b4a: 9f 5f subi r25, 0xFF ; 255 + b4c: 95 30 cpi r25, 0x05 ; 5 + b4e: 90 f2 brcs .-92 ; 0xaf4 */ static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE; static inline void Endpoint_SelectEndpoint(const uint8_t Address) { #if !defined(CONTROL_ONLY_DEVICE) UENUM = (Address & ENDPOINT_EPNUM_MASK); - b4c: 8f 70 andi r24, 0x0F ; 15 - b4e: 80 93 e9 00 sts 0x00E9, r24 + b50: 8f 70 andi r24, 0x0F ; 15 + b52: 80 93 e9 00 sts 0x00E9, r24 if (!(Endpoint_IsConfigured())) return false; } Endpoint_SelectEndpoint(Number); return true; - b52: 81 e0 ldi r24, 0x01 ; 1 - b54: 08 95 ret + b56: 81 e0 ldi r24, 0x01 ; 1 + b58: 08 95 ret UECFG0X = UECFG0XTemp; UECFG1X = UECFG1XTemp; UEIENX = UEIENXTemp; if (!(Endpoint_IsConfigured())) return false; - b56: 80 e0 ldi r24, 0x00 ; 0 + b5a: 80 e0 ldi r24, 0x00 ; 0 } Endpoint_SelectEndpoint(Number); return true; #endif } - b58: 08 95 ret + b5c: 08 95 ret -00000b5a : +00000b5e : uint8_t USB_Device_ControlEndpointSize = ENDPOINT_CONTROLEP_DEFAULT_SIZE; #endif bool Endpoint_ConfigureEndpointTable(const USB_Endpoint_Table_t* const Table, const uint8_t Entries) { - b5a: ef 92 push r14 - b5c: ff 92 push r15 - b5e: 0f 93 push r16 - b60: 1f 93 push r17 - b62: cf 93 push r28 - b64: df 93 push r29 - b66: 16 2f mov r17, r22 + b5e: ef 92 push r14 + b60: ff 92 push r15 + b62: 0f 93 push r16 + b64: 1f 93 push r17 + b66: cf 93 push r28 + b68: df 93 push r29 + b6a: 16 2f mov r17, r22 { if (!(Table[i].Address)) continue; if (!(Endpoint_ConfigureEndpoint(Table[i].Address, Table[i].Type, Table[i].Size, Table[i].Banks))) return false; - b68: e8 2e mov r14, r24 - b6a: e7 01 movw r28, r14 - b6c: 7e 01 movw r14, r28 - b6e: f9 2e mov r15, r25 - b70: e7 01 movw r28, r14 + b6c: e8 2e mov r14, r24 + b6e: e7 01 movw r28, r14 + b70: 7e 01 movw r14, r28 + b72: f9 2e mov r15, r25 + b74: e7 01 movw r28, r14 #endif bool Endpoint_ConfigureEndpointTable(const USB_Endpoint_Table_t* const Table, const uint8_t Entries) { for (uint8_t i = 0; i < Entries; i++) - b72: 00 e0 ldi r16, 0x00 ; 0 - b74: 2a c0 rjmp .+84 ; 0xbca + b76: 00 e0 ldi r16, 0x00 ; 0 + b78: 2a c0 rjmp .+84 ; 0xbce { if (!(Table[i].Address)) - b76: 98 81 ld r25, Y - b78: 99 23 and r25, r25 - b7a: 29 f1 breq .+74 ; 0xbc6 + b7a: 98 81 ld r25, Y + b7c: 99 23 and r25, r25 + b7e: 29 f1 breq .+74 ; 0xbca continue; if (!(Endpoint_ConfigureEndpoint(Table[i].Address, Table[i].Type, Table[i].Size, Table[i].Banks))) - b7c: 6b 81 ldd r22, Y+3 ; 0x03 - b7e: e9 81 ldd r30, Y+1 ; 0x01 - b80: fa 81 ldd r31, Y+2 ; 0x02 - b82: 2c 81 ldd r18, Y+4 ; 0x04 + b80: 6b 81 ldd r22, Y+3 ; 0x03 + b82: e9 81 ldd r30, Y+1 ; 0x01 + b84: fa 81 ldd r31, Y+2 ; 0x02 + b86: 2c 81 ldd r18, Y+4 ; 0x04 static inline bool Endpoint_ConfigureEndpoint(const uint8_t Address, const uint8_t Type, const uint16_t Size, const uint8_t Banks) { uint8_t Number = (Address & ENDPOINT_EPNUM_MASK); - b84: 89 2f mov r24, r25 - b86: 8f 70 andi r24, 0x0F ; 15 + b88: 89 2f mov r24, r25 + b8a: 8f 70 andi r24, 0x0F ; 15 if (Number >= ENDPOINT_TOTAL_ENDPOINTS) - b88: 85 30 cpi r24, 0x05 ; 5 - b8a: 18 f5 brcc .+70 ; 0xbd2 + b8c: 85 30 cpi r24, 0x05 ; 5 + b8e: 18 f5 brcc .+70 ; 0xbd6 return false; return Endpoint_ConfigureEndpoint_Prv(Number, ((Type << EPTYPE0) | ((Address & ENDPOINT_DIR_IN) ? (1 << EPDIR) : 0)), - b8c: 62 95 swap r22 - b8e: 66 0f add r22, r22 - b90: 66 0f add r22, r22 - b92: 60 7c andi r22, 0xC0 ; 192 - b94: 99 1f adc r25, r25 - b96: 99 27 eor r25, r25 + b90: 62 95 swap r22 + b92: 66 0f add r22, r22 + b94: 66 0f add r22, r22 + b96: 60 7c andi r22, 0xC0 ; 192 b98: 99 1f adc r25, r25 + b9a: 99 27 eor r25, r25 + b9c: 99 1f adc r25, r25 uint8_t Number = (Address & ENDPOINT_EPNUM_MASK); if (Number >= ENDPOINT_TOTAL_ENDPOINTS) return false; return Endpoint_ConfigureEndpoint_Prv(Number, - b9a: 69 2b or r22, r25 - b9c: 22 30 cpi r18, 0x02 ; 2 - b9e: 10 f0 brcs .+4 ; 0xba4 - ba0: 96 e0 ldi r25, 0x06 ; 6 - ba2: 01 c0 rjmp .+2 ; 0xba6 - ba4: 92 e0 ldi r25, 0x02 ; 2 + b9e: 69 2b or r22, r25 + ba0: 22 30 cpi r18, 0x02 ; 2 + ba2: 10 f0 brcs .+4 ; 0xba8 + ba4: 96 e0 ldi r25, 0x06 ; 6 + ba6: 01 c0 rjmp .+2 ; 0xbaa + ba8: 92 e0 ldi r25, 0x02 ; 2 static inline uint8_t Endpoint_BytesToEPSizeMask(const uint16_t Bytes) ATTR_WARN_UNUSED_RESULT ATTR_CONST ATTR_ALWAYS_INLINE; static inline uint8_t Endpoint_BytesToEPSizeMask(const uint16_t Bytes) { uint8_t MaskVal = 0; uint16_t CheckBytes = 8; - ba6: 28 e0 ldi r18, 0x08 ; 8 - ba8: 30 e0 ldi r19, 0x00 ; 0 + baa: 28 e0 ldi r18, 0x08 ; 8 + bac: 30 e0 ldi r19, 0x00 ; 0 /* Inline Functions: */ static inline uint8_t Endpoint_BytesToEPSizeMask(const uint16_t Bytes) ATTR_WARN_UNUSED_RESULT ATTR_CONST ATTR_ALWAYS_INLINE; static inline uint8_t Endpoint_BytesToEPSizeMask(const uint16_t Bytes) { uint8_t MaskVal = 0; - baa: 40 e0 ldi r20, 0x00 ; 0 - bac: 03 c0 rjmp .+6 ; 0xbb4 + bae: 40 e0 ldi r20, 0x00 ; 0 + bb0: 03 c0 rjmp .+6 ; 0xbb8 uint16_t CheckBytes = 8; while (CheckBytes < Bytes) { MaskVal++; - bae: 4f 5f subi r20, 0xFF ; 255 + bb2: 4f 5f subi r20, 0xFF ; 255 CheckBytes <<= 1; - bb0: 22 0f add r18, r18 - bb2: 33 1f adc r19, r19 + bb4: 22 0f add r18, r18 + bb6: 33 1f adc r19, r19 static inline uint8_t Endpoint_BytesToEPSizeMask(const uint16_t Bytes) { uint8_t MaskVal = 0; uint16_t CheckBytes = 8; while (CheckBytes < Bytes) - bb4: 2e 17 cp r18, r30 - bb6: 3f 07 cpc r19, r31 - bb8: d0 f3 brcs .-12 ; 0xbae + bb8: 2e 17 cp r18, r30 + bba: 3f 07 cpc r19, r31 + bbc: d0 f3 brcs .-12 ; 0xbb2 { MaskVal++; CheckBytes <<= 1; } return (MaskVal << EPSIZE0); - bba: 42 95 swap r20 - bbc: 40 7f andi r20, 0xF0 ; 240 + bbe: 42 95 swap r20 + bc0: 40 7f andi r20, 0xF0 ; 240 uint8_t Number = (Address & ENDPOINT_EPNUM_MASK); if (Number >= ENDPOINT_TOTAL_ENDPOINTS) return false; return Endpoint_ConfigureEndpoint_Prv(Number, - bbe: 49 2b or r20, r25 - bc0: 95 df rcall .-214 ; 0xaec - bc2: 88 23 and r24, r24 - bc4: 31 f0 breq .+12 ; 0xbd2 + bc2: 49 2b or r20, r25 + bc4: 95 df rcall .-214 ; 0xaf0 + bc6: 88 23 and r24, r24 + bc8: 31 f0 breq .+12 ; 0xbd6 #endif bool Endpoint_ConfigureEndpointTable(const USB_Endpoint_Table_t* const Table, const uint8_t Entries) { for (uint8_t i = 0; i < Entries; i++) - bc6: 0f 5f subi r16, 0xFF ; 255 - bc8: 25 96 adiw r28, 0x05 ; 5 - bca: 01 17 cp r16, r17 - bcc: a0 f2 brcs .-88 ; 0xb76 + bca: 0f 5f subi r16, 0xFF ; 255 + bcc: 25 96 adiw r28, 0x05 ; 5 + bce: 01 17 cp r16, r17 + bd0: a0 f2 brcs .-88 ; 0xb7a if (!(Endpoint_ConfigureEndpoint(Table[i].Address, Table[i].Type, Table[i].Size, Table[i].Banks))) return false; } return true; - bce: 81 e0 ldi r24, 0x01 ; 1 - bd0: 01 c0 rjmp .+2 ; 0xbd4 + bd2: 81 e0 ldi r24, 0x01 ; 1 + bd4: 01 c0 rjmp .+2 ; 0xbd8 { if (!(Table[i].Address)) continue; if (!(Endpoint_ConfigureEndpoint(Table[i].Address, Table[i].Type, Table[i].Size, Table[i].Banks))) return false; - bd2: 80 e0 ldi r24, 0x00 ; 0 + bd6: 80 e0 ldi r24, 0x00 ; 0 } return true; } - bd4: df 91 pop r29 - bd6: cf 91 pop r28 - bd8: 1f 91 pop r17 - bda: 0f 91 pop r16 - bdc: ff 90 pop r15 - bde: ef 90 pop r14 - be0: 08 95 ret - -00000be2 : + bd8: df 91 pop r29 + bda: cf 91 pop r28 + bdc: 1f 91 pop r17 + bde: 0f 91 pop r16 + be0: ff 90 pop r15 + be2: ef 90 pop r14 + be4: 08 95 ret + +00000be6 : } } void Endpoint_ClearStatusStage(void) { if (USB_ControlRequest.bmRequestType & REQDIR_DEVICETOHOST) - be2: 80 91 8e 02 lds r24, 0x028E - be6: 87 ff sbrs r24, 7 - be8: 11 c0 rjmp .+34 ; 0xc0c - bea: 03 c0 rjmp .+6 ; 0xbf2 + be6: 80 91 8f 02 lds r24, 0x028F + bea: 87 ff sbrs r24, 7 + bec: 13 c0 rjmp .+38 ; 0xc14 + bee: 04 c0 rjmp .+8 ; 0xbf8 { while (!(Endpoint_IsOUTReceived())) { if (USB_DeviceState == DEVICE_STATE_Unattached) - bec: 8e b3 in r24, 0x1e ; 30 - bee: 88 23 and r24, r24 - bf0: b1 f0 breq .+44 ; 0xc1e + bf0: 80 91 8e 02 lds r24, 0x028E + bf4: 88 23 and r24, r24 + bf6: b9 f0 breq .+46 ; 0xc26 * \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise. */ static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; static inline bool Endpoint_IsOUTReceived(void) { return ((UEINTX & (1 << RXOUTI)) ? true : false); - bf2: 80 91 e8 00 lds r24, 0x00E8 + bf8: 80 91 e8 00 lds r24, 0x00E8 void Endpoint_ClearStatusStage(void) { if (USB_ControlRequest.bmRequestType & REQDIR_DEVICETOHOST) { while (!(Endpoint_IsOUTReceived())) - bf6: 82 ff sbrs r24, 2 - bf8: f9 cf rjmp .-14 ; 0xbec + bfc: 82 ff sbrs r24, 2 + bfe: f8 cf rjmp .-16 ; 0xbf0 */ static inline void Endpoint_ClearOUT(void) ATTR_ALWAYS_INLINE; static inline void Endpoint_ClearOUT(void) { #if !defined(CONTROL_ONLY_DEVICE) UEINTX &= ~((1 << RXOUTI) | (1 << FIFOCON)); - bfa: 80 91 e8 00 lds r24, 0x00E8 - bfe: 8b 77 andi r24, 0x7B ; 123 - c00: 80 93 e8 00 sts 0x00E8, r24 - c04: 08 95 ret + c00: 80 91 e8 00 lds r24, 0x00E8 + c04: 8b 77 andi r24, 0x7B ; 123 + c06: 80 93 e8 00 sts 0x00E8, r24 + c0a: 08 95 ret } else { while (!(Endpoint_IsINReady())) { if (USB_DeviceState == DEVICE_STATE_Unattached) - c06: 8e b3 in r24, 0x1e ; 30 - c08: 88 23 and r24, r24 - c0a: 49 f0 breq .+18 ; 0xc1e + c0c: 80 91 8e 02 lds r24, 0x028E + c10: 88 23 and r24, r24 + c12: 49 f0 breq .+18 ; 0xc26 * \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise. */ static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; static inline bool Endpoint_IsINReady(void) { return ((UEINTX & (1 << TXINI)) ? true : false); - c0c: 80 91 e8 00 lds r24, 0x00E8 + c14: 80 91 e8 00 lds r24, 0x00E8 Endpoint_ClearOUT(); } else { while (!(Endpoint_IsINReady())) - c10: 80 ff sbrs r24, 0 - c12: f9 cf rjmp .-14 ; 0xc06 + c18: 80 ff sbrs r24, 0 + c1a: f8 cf rjmp .-16 ; 0xc0c */ static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE; static inline void Endpoint_ClearIN(void) { #if !defined(CONTROL_ONLY_DEVICE) UEINTX &= ~((1 << TXINI) | (1 << FIFOCON)); - c14: 80 91 e8 00 lds r24, 0x00E8 - c18: 8e 77 andi r24, 0x7E ; 126 - c1a: 80 93 e8 00 sts 0x00E8, r24 - c1e: 08 95 ret + c1c: 80 91 e8 00 lds r24, 0x00E8 + c20: 8e 77 andi r24, 0x7E ; 126 + c22: 80 93 e8 00 sts 0x00E8, r24 + c26: 08 95 ret -00000c20 : +00000c28 : * \return Current USB frame number from the USB controller. */ static inline uint16_t USB_Device_GetFrameNumber(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT; static inline uint16_t USB_Device_GetFrameNumber(void) { return UDFNUM; - c20: 80 91 e4 00 lds r24, 0x00E4 - c24: 90 91 e5 00 lds r25, 0x00E5 + c28: 80 91 e4 00 lds r24, 0x00E4 + c2c: 90 91 e5 00 lds r25, 0x00E5 #if !defined(CONTROL_ONLY_DEVICE) uint8_t Endpoint_WaitUntilReady(void) { #if (USB_STREAM_TIMEOUT_MS < 0xFF) uint8_t TimeoutMSRem = USB_STREAM_TIMEOUT_MS; - c28: 44 e6 ldi r20, 0x64 ; 100 + c30: 44 e6 ldi r20, 0x64 ; 100 * \return The currently selected endpoint's direction, as a \c ENDPOINT_DIR_* mask. */ static inline uint8_t Endpoint_GetEndpointDirection(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; static inline uint8_t Endpoint_GetEndpointDirection(void) { return (UECFG0X & (1 << EPDIR)) ? ENDPOINT_DIR_IN : ENDPOINT_DIR_OUT; - c2a: 20 91 ec 00 lds r18, 0x00EC - c2e: 20 ff sbrs r18, 0 - c30: 25 c0 rjmp .+74 ; 0xc7c + c32: 20 91 ec 00 lds r18, 0x00EC + c36: 20 ff sbrs r18, 0 + c38: 26 c0 rjmp .+76 ; 0xc86 * \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise. */ static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; static inline bool Endpoint_IsINReady(void) { return ((UEINTX & (1 << TXINI)) ? true : false); - c32: 20 91 e8 00 lds r18, 0x00E8 + c3a: 20 91 e8 00 lds r18, 0x00E8 for (;;) { if (Endpoint_GetEndpointDirection() == ENDPOINT_DIR_IN) { if (Endpoint_IsINReady()) - c36: 20 fd sbrc r18, 0 - c38: 15 c0 rjmp .+42 ; 0xc64 + c3e: 20 fd sbrc r18, 0 + c40: 16 c0 rjmp .+44 ; 0xc6e { if (Endpoint_IsOUTReceived()) return ENDPOINT_READYWAIT_NoError; } uint8_t USB_DeviceState_LCL = USB_DeviceState; - c3a: 2e b3 in r18, 0x1e ; 30 + c42: 20 91 8e 02 lds r18, 0x028E if (USB_DeviceState_LCL == DEVICE_STATE_Unattached) - c3c: 22 23 and r18, r18 - c3e: a1 f0 breq .+40 ; 0xc68 + c46: 22 23 and r18, r18 + c48: a1 f0 breq .+40 ; 0xc72 return ENDPOINT_READYWAIT_DeviceDisconnected; else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended) - c40: 25 30 cpi r18, 0x05 ; 5 - c42: a1 f0 breq .+40 ; 0xc6c + c4a: 25 30 cpi r18, 0x05 ; 5 + c4c: a1 f0 breq .+40 ; 0xc76 * \return Boolean \c true if the currently selected endpoint is stalled, \c false otherwise. */ static inline bool Endpoint_IsStalled(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; static inline bool Endpoint_IsStalled(void) { return ((UECONX & (1 << STALLRQ)) ? true : false); - c44: 20 91 eb 00 lds r18, 0x00EB + c4e: 20 91 eb 00 lds r18, 0x00EB return ENDPOINT_READYWAIT_BusSuspended; else if (Endpoint_IsStalled()) - c48: 25 fd sbrc r18, 5 - c4a: 12 c0 rjmp .+36 ; 0xc70 - c4c: 20 91 e4 00 lds r18, 0x00E4 - c50: 30 91 e5 00 lds r19, 0x00E5 + c52: 25 fd sbrc r18, 5 + c54: 12 c0 rjmp .+36 ; 0xc7a + c56: 20 91 e4 00 lds r18, 0x00E4 + c5a: 30 91 e5 00 lds r19, 0x00E5 return ENDPOINT_READYWAIT_EndpointStalled; uint16_t CurrentFrameNumber = USB_Device_GetFrameNumber(); if (CurrentFrameNumber != PreviousFrameNumber) - c54: 28 17 cp r18, r24 - c56: 39 07 cpc r19, r25 - c58: 41 f3 breq .-48 ; 0xc2a + c5e: 28 17 cp r18, r24 + c60: 39 07 cpc r19, r25 + c62: 39 f3 breq .-50 ; 0xc32 { PreviousFrameNumber = CurrentFrameNumber; if (!(TimeoutMSRem--)) - c5a: 44 23 and r20, r20 - c5c: 59 f0 breq .+22 ; 0xc74 - c5e: 41 50 subi r20, 0x01 ; 1 - c60: c9 01 movw r24, r18 - c62: e3 cf rjmp .-58 ; 0xc2a + c64: 44 23 and r20, r20 + c66: 59 f0 breq .+22 ; 0xc7e + c68: 41 50 subi r20, 0x01 ; 1 + c6a: c9 01 movw r24, r18 + c6c: e2 cf rjmp .-60 ; 0xc32 for (;;) { if (Endpoint_GetEndpointDirection() == ENDPOINT_DIR_IN) { if (Endpoint_IsINReady()) return ENDPOINT_READYWAIT_NoError; - c64: 80 e0 ldi r24, 0x00 ; 0 - c66: 08 95 ret + c6e: 80 e0 ldi r24, 0x00 ; 0 + c70: 08 95 ret } uint8_t USB_DeviceState_LCL = USB_DeviceState; if (USB_DeviceState_LCL == DEVICE_STATE_Unattached) return ENDPOINT_READYWAIT_DeviceDisconnected; - c68: 82 e0 ldi r24, 0x02 ; 2 - c6a: 08 95 ret + c72: 82 e0 ldi r24, 0x02 ; 2 + c74: 08 95 ret else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended) return ENDPOINT_READYWAIT_BusSuspended; - c6c: 83 e0 ldi r24, 0x03 ; 3 - c6e: 08 95 ret + c76: 83 e0 ldi r24, 0x03 ; 3 + c78: 08 95 ret else if (Endpoint_IsStalled()) return ENDPOINT_READYWAIT_EndpointStalled; - c70: 81 e0 ldi r24, 0x01 ; 1 - c72: 08 95 ret + c7a: 81 e0 ldi r24, 0x01 ; 1 + c7c: 08 95 ret if (CurrentFrameNumber != PreviousFrameNumber) { PreviousFrameNumber = CurrentFrameNumber; if (!(TimeoutMSRem--)) return ENDPOINT_READYWAIT_Timeout; - c74: 84 e0 ldi r24, 0x04 ; 4 - c76: 08 95 ret + c7e: 84 e0 ldi r24, 0x04 ; 4 + c80: 08 95 ret return ENDPOINT_READYWAIT_NoError; } else { if (Endpoint_IsOUTReceived()) return ENDPOINT_READYWAIT_NoError; - c78: 80 e0 ldi r24, 0x00 ; 0 + c82: 80 e0 ldi r24, 0x00 ; 0 if (!(TimeoutMSRem--)) return ENDPOINT_READYWAIT_Timeout; } } } - c7a: 08 95 ret + c84: 08 95 ret * \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise. */ static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; static inline bool Endpoint_IsOUTReceived(void) { return ((UEINTX & (1 << RXOUTI)) ? true : false); - c7c: 20 91 e8 00 lds r18, 0x00E8 + c86: 20 91 e8 00 lds r18, 0x00E8 if (Endpoint_IsINReady()) return ENDPOINT_READYWAIT_NoError; } else { if (Endpoint_IsOUTReceived()) - c80: 22 ff sbrs r18, 2 - c82: db cf rjmp .-74 ; 0xc3a - c84: f9 cf rjmp .-14 ; 0xc78 + c8a: 22 ff sbrs r18, 2 + c8c: da cf rjmp .-76 ; 0xc42 + c8e: f9 cf rjmp .-14 ; 0xc82 -00000c86 : +00000c90 : { #if defined(USB_CAN_BE_BOTH) bool UIDModeSelectEnabled = ((UHWCON & (1 << UIDE)) != 0); #endif USB_INT_DisableAllInterrupts(); - c86: 40 d0 rcall .+128 ; 0xd08 + c90: 41 d0 rcall .+130 ; 0xd14 USB_INT_ClearAllInterrupts(); - c88: 42 d0 rcall .+132 ; 0xd0e + c92: 43 d0 rcall .+134 ; 0xd1a } static inline void USB_Controller_Reset(void) ATTR_ALWAYS_INLINE; static inline void USB_Controller_Reset(void) { USBCON &= ~(1 << USBE); - c8a: 80 91 d8 00 lds r24, 0x00D8 - c8e: 8f 77 andi r24, 0x7F ; 127 - c90: 80 93 d8 00 sts 0x00D8, r24 - USBCON |= (1 << USBE); c94: 80 91 d8 00 lds r24, 0x00D8 - c98: 80 68 ori r24, 0x80 ; 128 + c98: 8f 77 andi r24, 0x7F ; 127 c9a: 80 93 d8 00 sts 0x00D8, r24 + USBCON |= (1 << USBE); + c9e: 80 91 d8 00 lds r24, 0x00D8 + ca2: 80 68 ori r24, 0x80 ; 128 + ca4: 80 93 d8 00 sts 0x00D8, r24 } static inline void USB_CLK_Unfreeze(void) ATTR_ALWAYS_INLINE; static inline void USB_CLK_Unfreeze(void) { USBCON &= ~(1 << FRZCLK); - c9e: 80 91 d8 00 lds r24, 0x00D8 - ca2: 8f 7d andi r24, 0xDF ; 223 - ca4: 80 93 d8 00 sts 0x00D8, r24 + ca8: 80 91 d8 00 lds r24, 0x00D8 + cac: 8f 7d andi r24, 0xDF ; 223 + cae: 80 93 d8 00 sts 0x00D8, r24 /* Inline Functions: */ static inline void USB_PLL_On(void) ATTR_ALWAYS_INLINE; static inline void USB_PLL_On(void) { PLLCSR = USB_PLL_PSC; - ca8: 84 e0 ldi r24, 0x04 ; 4 - caa: 89 bd out 0x29, r24 ; 41 + cb2: 84 e0 ldi r24, 0x04 ; 4 + cb4: 89 bd out 0x29, r24 ; 41 PLLCSR = (USB_PLL_PSC | (1 << PLLE)); - cac: 86 e0 ldi r24, 0x06 ; 6 - cae: 89 bd out 0x29, r24 ; 41 + cb6: 86 e0 ldi r24, 0x06 ; 6 + cb8: 89 bd out 0x29, r24 ; 41 if (!(USB_Options & USB_OPT_MANUAL_PLL)) { #if defined(USB_SERIES_2_AVR) USB_PLL_On(); while (!(USB_PLL_IsReady())); - cb0: 09 b4 in r0, 0x29 ; 41 - cb2: 00 fe sbrs r0, 0 - cb4: fd cf rjmp .-6 ; 0xcb0 + cba: 09 b4 in r0, 0x29 ; 41 + cbc: 00 fe sbrs r0, 0 + cbe: fd cf rjmp .-6 ; 0xcba } #if defined(USB_CAN_BE_DEVICE) static void USB_Init_Device(void) { USB_DeviceState = DEVICE_STATE_Unattached; - cb6: 1e ba out 0x1e, r1 ; 30 + cc0: 10 92 8e 02 sts 0x028E, r1 USB_Device_ConfigurationNumber = 0; - cb8: 10 92 8a 02 sts 0x028A, r1 + cc4: 10 92 8a 02 sts 0x028A, r1 #if !defined(NO_DEVICE_REMOTE_WAKEUP) USB_Device_RemoteWakeupEnabled = false; - cbc: 10 92 8c 02 sts 0x028C, r1 + cc8: 10 92 8c 02 sts 0x028C, r1 #endif #if !defined(NO_DEVICE_SELF_POWER) USB_Device_CurrentlySelfPowered = false; - cc0: 10 92 8b 02 sts 0x028B, r1 + ccc: 10 92 8b 02 sts 0x028B, r1 uint8_t Number = (Address & ENDPOINT_EPNUM_MASK); if (Number >= ENDPOINT_TOTAL_ENDPOINTS) return false; return Endpoint_ConfigureEndpoint_Prv(Number, - cc4: 80 e0 ldi r24, 0x00 ; 0 - cc6: 60 e0 ldi r22, 0x00 ; 0 - cc8: 42 e0 ldi r20, 0x02 ; 2 - cca: 10 df rcall .-480 ; 0xaec + cd0: 80 e0 ldi r24, 0x00 ; 0 + cd2: 60 e0 ldi r22, 0x00 ; 0 + cd4: 42 e0 ldi r20, 0x02 ; 2 + cd6: 0c df rcall .-488 ; 0xaf0 #if defined(USB_CAN_BE_DEVICE) case USB_INT_WAKEUPI: UDINT &= ~(1 << WAKEUPI); break; case USB_INT_SUSPI: UDINT &= ~(1 << SUSPI); - ccc: 80 91 e1 00 lds r24, 0x00E1 - cd0: 8e 7f andi r24, 0xFE ; 254 - cd2: 80 93 e1 00 sts 0x00E1, r24 + cd8: 80 91 e1 00 lds r24, 0x00E1 + cdc: 8e 7f andi r24, 0xFE ; 254 + cde: 80 93 e1 00 sts 0x00E1, r24 #if defined(USB_CAN_BE_DEVICE) case USB_INT_WAKEUPI: UDIEN |= (1 << WAKEUPE); break; case USB_INT_SUSPI: UDIEN |= (1 << SUSPE); - cd6: 80 91 e2 00 lds r24, 0x00E2 - cda: 81 60 ori r24, 0x01 ; 1 - cdc: 80 93 e2 00 sts 0x00E2, r24 + ce2: 80 91 e2 00 lds r24, 0x00E2 + ce6: 81 60 ori r24, 0x01 ; 1 + ce8: 80 93 e2 00 sts 0x00E2, r24 break; case USB_INT_EORSTI: UDIEN |= (1 << EORSTE); - ce0: 80 91 e2 00 lds r24, 0x00E2 - ce4: 88 60 ori r24, 0x08 ; 8 - ce6: 80 93 e2 00 sts 0x00E2, r24 + cec: 80 91 e2 00 lds r24, 0x00E2 + cf0: 88 60 ori r24, 0x08 ; 8 + cf2: 80 93 e2 00 sts 0x00E2, r24 * register and despite the datasheet making no mention of its requirement in host mode. */ static inline void USB_Attach(void) ATTR_ALWAYS_INLINE; static inline void USB_Attach(void) { UDCON &= ~(1 << DETACH); - cea: 80 91 e0 00 lds r24, 0x00E0 - cee: 8e 7f andi r24, 0xFE ; 254 - cf0: 80 93 e0 00 sts 0x00E0, r24 + cf6: 80 91 e0 00 lds r24, 0x00E0 + cfa: 8e 7f andi r24, 0xFE ; 254 + cfc: 80 93 e0 00 sts 0x00E0, r24 } #if (defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)) USB_OTGPAD_On(); #endif } - cf4: 08 95 ret + d00: 08 95 ret -00000cf6 : +00000d02 : static inline void USB_REG_On(void) { #if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR) UHWCON |= (1 << UVREGE); #else REGCR &= ~(1 << REGDIS); - cf6: e3 e6 ldi r30, 0x63 ; 99 - cf8: f0 e0 ldi r31, 0x00 ; 0 - cfa: 80 81 ld r24, Z - cfc: 8e 7f andi r24, 0xFE ; 254 - cfe: 80 83 st Z, r24 + d02: e3 e6 ldi r30, 0x63 ; 99 + d04: f0 e0 ldi r31, 0x00 ; 0 + d06: 80 81 ld r24, Z + d08: 8e 7f andi r24, 0xFE ; 254 + d0a: 80 83 st Z, r24 UHWCON &= ~(1 << UIDE); USB_CurrentMode = Mode; } #endif USB_IsInitialized = true; - d00: 81 e0 ldi r24, 0x01 ; 1 - d02: 80 93 8d 02 sts 0x028D, r24 + d0c: 81 e0 ldi r24, 0x01 ; 1 + d0e: 80 93 8d 02 sts 0x028D, r24 USB_ResetInterface(); } - d06: bf cf rjmp .-130 ; 0xc86 + d12: be cf rjmp .-132 ; 0xc90 -00000d08 : +00000d14 : #if defined(USB_CAN_BE_HOST) UHIEN = 0; #endif #if defined(USB_CAN_BE_DEVICE) UDIEN = 0; - d08: 10 92 e2 00 sts 0x00E2, r1 + d14: 10 92 e2 00 sts 0x00E2, r1 #endif } - d0c: 08 95 ret + d18: 08 95 ret -00000d0e : +00000d1a : #if defined(USB_CAN_BE_HOST) UHINT = 0; #endif #if defined(USB_CAN_BE_DEVICE) UDINT = 0; - d0e: 10 92 e1 00 sts 0x00E1, r1 + d1a: 10 92 e1 00 sts 0x00E1, r1 #endif } - d12: 08 95 ret + d1e: 08 95 ret -00000d14 <__vector_11>: +00000d20 <__vector_11>: ISR(USB_GEN_vect, ISR_BLOCK) { - d14: 1f 92 push r1 - d16: 0f 92 push r0 - d18: 0f b6 in r0, 0x3f ; 63 - d1a: 0f 92 push r0 - d1c: 11 24 eor r1, r1 - d1e: 2f 93 push r18 - d20: 3f 93 push r19 - d22: 4f 93 push r20 - d24: 5f 93 push r21 - d26: 6f 93 push r22 - d28: 7f 93 push r23 - d2a: 8f 93 push r24 - d2c: 9f 93 push r25 - d2e: af 93 push r26 - d30: bf 93 push r27 - d32: ef 93 push r30 - d34: ff 93 push r31 + d20: 1f 92 push r1 + d22: 0f 92 push r0 + d24: 0f b6 in r0, 0x3f ; 63 + d26: 0f 92 push r0 + d28: 11 24 eor r1, r1 + d2a: 2f 93 push r18 + d2c: 3f 93 push r19 + d2e: 4f 93 push r20 + d30: 5f 93 push r21 + d32: 6f 93 push r22 + d34: 7f 93 push r23 + d36: 8f 93 push r24 + d38: 9f 93 push r25 + d3a: af 93 push r26 + d3c: bf 93 push r27 + d3e: ef 93 push r30 + d40: ff 93 push r31 case USB_INT_SUSPI: return (UDINT & (1 << SUSPI)); case USB_INT_EORSTI: return (UDINT & (1 << EORSTI)); case USB_INT_SOFI: return (UDINT & (1 << SOFI)); - d36: 80 91 e1 00 lds r24, 0x00E1 + d42: 80 91 e1 00 lds r24, 0x00E1 #if defined(USB_CAN_BE_DEVICE) #if !defined(NO_SOF_EVENTS) if (USB_INT_HasOccurred(USB_INT_SOFI) && USB_INT_IsEnabled(USB_INT_SOFI)) - d3a: 82 ff sbrs r24, 2 - d3c: 0a c0 rjmp .+20 ; 0xd52 <__vector_11+0x3e> + d46: 82 ff sbrs r24, 2 + d48: 0a c0 rjmp .+20 ; 0xd5e <__vector_11+0x3e> case USB_INT_SUSPI: return (UDIEN & (1 << SUSPE)); case USB_INT_EORSTI: return (UDIEN & (1 << EORSTE)); case USB_INT_SOFI: return (UDIEN & (1 << SOFE)); - d3e: 80 91 e2 00 lds r24, 0x00E2 - d42: 82 ff sbrs r24, 2 - d44: 06 c0 rjmp .+12 ; 0xd52 <__vector_11+0x3e> + d4a: 80 91 e2 00 lds r24, 0x00E2 + d4e: 82 ff sbrs r24, 2 + d50: 06 c0 rjmp .+12 ; 0xd5e <__vector_11+0x3e> break; case USB_INT_EORSTI: UDINT &= ~(1 << EORSTI); break; case USB_INT_SOFI: UDINT &= ~(1 << SOFI); - d46: 80 91 e1 00 lds r24, 0x00E1 - d4a: 8b 7f andi r24, 0xFB ; 251 - d4c: 80 93 e1 00 sts 0x00E1, r24 + d52: 80 91 e1 00 lds r24, 0x00E1 + d56: 8b 7f andi r24, 0xFB ; 251 + d58: 80 93 e1 00 sts 0x00E1, r24 { USB_INT_Clear(USB_INT_SOFI); EVENT_USB_Device_StartOfFrame(); - d50: 21 d2 rcall .+1090 ; 0x1194 + d5c: e6 d1 rcall .+972 ; 0x112a #endif #if defined(USB_CAN_BE_DEVICE) case USB_INT_WAKEUPI: return (UDINT & (1 << WAKEUPI)); case USB_INT_SUSPI: return (UDINT & (1 << SUSPI)); - d52: 80 91 e1 00 lds r24, 0x00E1 + d5e: 80 91 e1 00 lds r24, 0x00E1 EVENT_USB_Device_Disconnect(); } } #endif if (USB_INT_HasOccurred(USB_INT_SUSPI) && USB_INT_IsEnabled(USB_INT_SUSPI)) - d56: 80 ff sbrs r24, 0 - d58: 16 c0 rjmp .+44 ; 0xd86 <__vector_11+0x72> + d62: 80 ff sbrs r24, 0 + d64: 17 c0 rjmp .+46 ; 0xd94 <__vector_11+0x74> #endif #if defined(USB_CAN_BE_DEVICE) case USB_INT_WAKEUPI: return (UDIEN & (1 << WAKEUPE)); case USB_INT_SUSPI: return (UDIEN & (1 << SUSPE)); - d5a: 80 91 e2 00 lds r24, 0x00E2 - d5e: 80 ff sbrs r24, 0 - d60: 12 c0 rjmp .+36 ; 0xd86 <__vector_11+0x72> + d66: 80 91 e2 00 lds r24, 0x00E2 + d6a: 80 ff sbrs r24, 0 + d6c: 13 c0 rjmp .+38 ; 0xd94 <__vector_11+0x74> #if defined(USB_CAN_BE_DEVICE) case USB_INT_WAKEUPI: UDIEN &= ~(1 << WAKEUPE); break; case USB_INT_SUSPI: UDIEN &= ~(1 << SUSPE); - d62: 80 91 e2 00 lds r24, 0x00E2 - d66: 8e 7f andi r24, 0xFE ; 254 - d68: 80 93 e2 00 sts 0x00E2, r24 + d6e: 80 91 e2 00 lds r24, 0x00E2 + d72: 8e 7f andi r24, 0xFE ; 254 + d74: 80 93 e2 00 sts 0x00E2, r24 USBCON |= (1 << IDTE); break; #endif #if defined(USB_CAN_BE_DEVICE) case USB_INT_WAKEUPI: UDIEN |= (1 << WAKEUPE); - d6c: 80 91 e2 00 lds r24, 0x00E2 - d70: 80 61 ori r24, 0x10 ; 16 - d72: 80 93 e2 00 sts 0x00E2, r24 + d78: 80 91 e2 00 lds r24, 0x00E2 + d7c: 80 61 ori r24, 0x10 ; 16 + d7e: 80 93 e2 00 sts 0x00E2, r24 #endif static inline void USB_CLK_Freeze(void) ATTR_ALWAYS_INLINE; static inline void USB_CLK_Freeze(void) { USBCON |= (1 << FRZCLK); - d76: 80 91 d8 00 lds r24, 0x00D8 - d7a: 80 62 ori r24, 0x20 ; 32 - d7c: 80 93 d8 00 sts 0x00D8, r24 + d82: 80 91 d8 00 lds r24, 0x00D8 + d86: 80 62 ori r24, 0x20 ; 32 + d88: 80 93 d8 00 sts 0x00D8, r24 } static inline void USB_PLL_Off(void) ATTR_ALWAYS_INLINE; static inline void USB_PLL_Off(void) { PLLCSR = 0; - d80: 19 bc out 0x29, r1 ; 41 + d8c: 19 bc out 0x29, r1 ; 41 if (!(USB_Options & USB_OPT_MANUAL_PLL)) USB_PLL_Off(); #if defined(USB_SERIES_2_AVR) && !defined(NO_LIMITED_CONTROLLER_CONNECT) USB_DeviceState = DEVICE_STATE_Unattached; - d82: 1e ba out 0x1e, r1 ; 30 + d8e: 10 92 8e 02 sts 0x028E, r1 EVENT_USB_Device_Disconnect(); - d84: 3d dc rcall .-1926 ; 0x600 + d92: 36 dc rcall .-1940 ; 0x600 case USB_INT_IDTI: return (USBINT & (1 << IDTI)); #endif #if defined(USB_CAN_BE_DEVICE) case USB_INT_WAKEUPI: return (UDINT & (1 << WAKEUPI)); - d86: 80 91 e1 00 lds r24, 0x00E1 + d94: 80 91 e1 00 lds r24, 0x00E1 USB_DeviceState = DEVICE_STATE_Suspended; EVENT_USB_Device_Suspend(); #endif } if (USB_INT_HasOccurred(USB_INT_WAKEUPI) && USB_INT_IsEnabled(USB_INT_WAKEUPI)) - d8a: 84 ff sbrs r24, 4 - d8c: 2c c0 rjmp .+88 ; 0xde6 <__vector_11+0xd2> + d98: 84 ff sbrs r24, 4 + d9a: 2d c0 rjmp .+90 ; 0xdf6 <__vector_11+0xd6> case USB_INT_IDTI: return (USBCON & (1 << IDTE)); #endif #if defined(USB_CAN_BE_DEVICE) case USB_INT_WAKEUPI: return (UDIEN & (1 << WAKEUPE)); - d8e: 80 91 e2 00 lds r24, 0x00E2 - d92: 84 ff sbrs r24, 4 - d94: 28 c0 rjmp .+80 ; 0xde6 <__vector_11+0xd2> + d9c: 80 91 e2 00 lds r24, 0x00E2 + da0: 84 ff sbrs r24, 4 + da2: 29 c0 rjmp .+82 ; 0xdf6 <__vector_11+0xd6> /* Inline Functions: */ static inline void USB_PLL_On(void) ATTR_ALWAYS_INLINE; static inline void USB_PLL_On(void) { PLLCSR = USB_PLL_PSC; - d96: 84 e0 ldi r24, 0x04 ; 4 - d98: 89 bd out 0x29, r24 ; 41 + da4: 84 e0 ldi r24, 0x04 ; 4 + da6: 89 bd out 0x29, r24 ; 41 PLLCSR = (USB_PLL_PSC | (1 << PLLE)); - d9a: 86 e0 ldi r24, 0x06 ; 6 - d9c: 89 bd out 0x29, r24 ; 41 + da8: 86 e0 ldi r24, 0x06 ; 6 + daa: 89 bd out 0x29, r24 ; 41 { if (!(USB_Options & USB_OPT_MANUAL_PLL)) { USB_PLL_On(); while (!(USB_PLL_IsReady())); - d9e: 09 b4 in r0, 0x29 ; 41 - da0: 00 fe sbrs r0, 0 - da2: fd cf rjmp .-6 ; 0xd9e <__vector_11+0x8a> + dac: 09 b4 in r0, 0x29 ; 41 + dae: 00 fe sbrs r0, 0 + db0: fd cf rjmp .-6 ; 0xdac <__vector_11+0x8c> } static inline void USB_CLK_Unfreeze(void) ATTR_ALWAYS_INLINE; static inline void USB_CLK_Unfreeze(void) { USBCON &= ~(1 << FRZCLK); - da4: 80 91 d8 00 lds r24, 0x00D8 - da8: 8f 7d andi r24, 0xDF ; 223 - daa: 80 93 d8 00 sts 0x00D8, r24 + db2: 80 91 d8 00 lds r24, 0x00D8 + db6: 8f 7d andi r24, 0xDF ; 223 + db8: 80 93 d8 00 sts 0x00D8, r24 USBINT &= ~(1 << IDTI); break; #endif #if defined(USB_CAN_BE_DEVICE) case USB_INT_WAKEUPI: UDINT &= ~(1 << WAKEUPI); - dae: 80 91 e1 00 lds r24, 0x00E1 - db2: 8f 7e andi r24, 0xEF ; 239 - db4: 80 93 e1 00 sts 0x00E1, r24 + dbc: 80 91 e1 00 lds r24, 0x00E1 + dc0: 8f 7e andi r24, 0xEF ; 239 + dc2: 80 93 e1 00 sts 0x00E1, r24 USBCON &= ~(1 << IDTE); break; #endif #if defined(USB_CAN_BE_DEVICE) case USB_INT_WAKEUPI: UDIEN &= ~(1 << WAKEUPE); - db8: 80 91 e2 00 lds r24, 0x00E2 - dbc: 8f 7e andi r24, 0xEF ; 239 - dbe: 80 93 e2 00 sts 0x00E2, r24 + dc6: 80 91 e2 00 lds r24, 0x00E2 + dca: 8f 7e andi r24, 0xEF ; 239 + dcc: 80 93 e2 00 sts 0x00E2, r24 #if defined(USB_CAN_BE_DEVICE) case USB_INT_WAKEUPI: UDIEN |= (1 << WAKEUPE); break; case USB_INT_SUSPI: UDIEN |= (1 << SUSPE); - dc2: 80 91 e2 00 lds r24, 0x00E2 - dc6: 81 60 ori r24, 0x01 ; 1 - dc8: 80 93 e2 00 sts 0x00E2, r24 + dd0: 80 91 e2 00 lds r24, 0x00E2 + dd4: 81 60 ori r24, 0x01 ; 1 + dd6: 80 93 e2 00 sts 0x00E2, r24 USB_INT_Clear(USB_INT_WAKEUPI); USB_INT_Disable(USB_INT_WAKEUPI); USB_INT_Enable(USB_INT_SUSPI); if (USB_Device_ConfigurationNumber) - dcc: 80 91 8a 02 lds r24, 0x028A - dd0: 88 23 and r24, r24 - dd2: 21 f4 brne .+8 ; 0xddc <__vector_11+0xc8> + dda: 80 91 8a 02 lds r24, 0x028A + dde: 88 23 and r24, r24 + de0: 21 f4 brne .+8 ; 0xdea <__vector_11+0xca> } static inline bool USB_Device_IsAddressSet(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT; static inline bool USB_Device_IsAddressSet(void) { return (UDADDR & (1 << ADDEN)); - dd4: 80 91 e3 00 lds r24, 0x00E3 + de2: 80 91 e3 00 lds r24, 0x00E3 USB_DeviceState = DEVICE_STATE_Configured; else USB_DeviceState = (USB_Device_IsAddressSet()) ? DEVICE_STATE_Configured : DEVICE_STATE_Powered; - dd8: 87 ff sbrs r24, 7 - dda: 02 c0 rjmp .+4 ; 0xde0 <__vector_11+0xcc> - ddc: 84 e0 ldi r24, 0x04 ; 4 - dde: 01 c0 rjmp .+2 ; 0xde2 <__vector_11+0xce> - de0: 81 e0 ldi r24, 0x01 ; 1 - de2: 8e bb out 0x1e, r24 ; 30 + de6: 87 ff sbrs r24, 7 + de8: 02 c0 rjmp .+4 ; 0xdee <__vector_11+0xce> + dea: 84 e0 ldi r24, 0x04 ; 4 + dec: 01 c0 rjmp .+2 ; 0xdf0 <__vector_11+0xd0> + dee: 81 e0 ldi r24, 0x01 ; 1 + df0: 80 93 8e 02 sts 0x028E, r24 #if defined(USB_SERIES_2_AVR) && !defined(NO_LIMITED_CONTROLLER_CONNECT) EVENT_USB_Device_Connect(); - de4: 0c dc rcall .-2024 ; 0x5fe + df4: 04 dc rcall .-2040 ; 0x5fe case USB_INT_WAKEUPI: return (UDINT & (1 << WAKEUPI)); case USB_INT_SUSPI: return (UDINT & (1 << SUSPI)); case USB_INT_EORSTI: return (UDINT & (1 << EORSTI)); - de6: 80 91 e1 00 lds r24, 0x00E1 + df6: 80 91 e1 00 lds r24, 0x00E1 #else EVENT_USB_Device_WakeUp(); #endif } if (USB_INT_HasOccurred(USB_INT_EORSTI) && USB_INT_IsEnabled(USB_INT_EORSTI)) - dea: 83 ff sbrs r24, 3 - dec: 26 c0 rjmp .+76 ; 0xe3a <__vector_11+0x126> + dfa: 83 ff sbrs r24, 3 + dfc: 22 c0 rjmp .+68 ; 0xe42 <__vector_11+0x122> case USB_INT_WAKEUPI: return (UDIEN & (1 << WAKEUPE)); case USB_INT_SUSPI: return (UDIEN & (1 << SUSPE)); case USB_INT_EORSTI: return (UDIEN & (1 << EORSTE)); - dee: 80 91 e2 00 lds r24, 0x00E2 - df2: 83 ff sbrs r24, 3 - df4: 22 c0 rjmp .+68 ; 0xe3a <__vector_11+0x126> + dfe: 80 91 e2 00 lds r24, 0x00E2 + e02: 83 ff sbrs r24, 3 + e04: 1e c0 rjmp .+60 ; 0xe42 <__vector_11+0x122> break; case USB_INT_SUSPI: UDINT &= ~(1 << SUSPI); break; case USB_INT_EORSTI: UDINT &= ~(1 << EORSTI); - df6: 80 91 e1 00 lds r24, 0x00E1 - dfa: 87 7f andi r24, 0xF7 ; 247 - dfc: 80 93 e1 00 sts 0x00E1, r24 + e06: 80 91 e1 00 lds r24, 0x00E1 + e0a: 87 7f andi r24, 0xF7 ; 247 + e0c: 80 93 e1 00 sts 0x00E1, r24 { USB_INT_Clear(USB_INT_EORSTI); USB_DeviceState = DEVICE_STATE_Default; - e00: 82 e0 ldi r24, 0x02 ; 2 - e02: 8e bb out 0x1e, r24 ; 30 + e10: 82 e0 ldi r24, 0x02 ; 2 + e12: 80 93 8e 02 sts 0x028E, r24 USB_Device_ConfigurationNumber = 0; - e04: 10 92 8a 02 sts 0x028A, r1 + e16: 10 92 8a 02 sts 0x028A, r1 #if defined(USB_CAN_BE_DEVICE) case USB_INT_WAKEUPI: UDINT &= ~(1 << WAKEUPI); break; case USB_INT_SUSPI: UDINT &= ~(1 << SUSPI); - e08: 80 91 e1 00 lds r24, 0x00E1 - e0c: 8e 7f andi r24, 0xFE ; 254 - e0e: 80 93 e1 00 sts 0x00E1, r24 + e1a: 80 91 e1 00 lds r24, 0x00E1 + e1e: 8e 7f andi r24, 0xFE ; 254 + e20: 80 93 e1 00 sts 0x00E1, r24 #if defined(USB_CAN_BE_DEVICE) case USB_INT_WAKEUPI: UDIEN &= ~(1 << WAKEUPE); break; case USB_INT_SUSPI: UDIEN &= ~(1 << SUSPE); - e12: 80 91 e2 00 lds r24, 0x00E2 - e16: 8e 7f andi r24, 0xFE ; 254 - e18: 80 93 e2 00 sts 0x00E2, r24 + e24: 80 91 e2 00 lds r24, 0x00E2 + e28: 8e 7f andi r24, 0xFE ; 254 + e2a: 80 93 e2 00 sts 0x00E2, r24 USBCON |= (1 << IDTE); break; #endif #if defined(USB_CAN_BE_DEVICE) case USB_INT_WAKEUPI: UDIEN |= (1 << WAKEUPE); - e1c: 80 91 e2 00 lds r24, 0x00E2 - e20: 80 61 ori r24, 0x10 ; 16 - e22: 80 93 e2 00 sts 0x00E2, r24 + e2e: 80 91 e2 00 lds r24, 0x00E2 + e32: 80 61 ori r24, 0x10 ; 16 + e34: 80 93 e2 00 sts 0x00E2, r24 uint8_t Number = (Address & ENDPOINT_EPNUM_MASK); if (Number >= ENDPOINT_TOTAL_ENDPOINTS) return false; return Endpoint_ConfigureEndpoint_Prv(Number, - e26: 80 e0 ldi r24, 0x00 ; 0 - e28: 60 e0 ldi r22, 0x00 ; 0 - e2a: 42 e0 ldi r20, 0x02 ; 2 - e2c: 5f de rcall .-834 ; 0xaec - break; - case USB_INT_SOFI: - UDIEN |= (1 << SOFE); - break; - case USB_INT_RXSTPI: - UEIENX |= (1 << RXSTPE); - e2e: 80 91 f0 00 lds r24, 0x00F0 - e32: 88 60 ori r24, 0x08 ; 8 - e34: 80 93 f0 00 sts 0x00F0, r24 + e38: 80 e0 ldi r24, 0x00 ; 0 + e3a: 60 e0 ldi r22, 0x00 ; 0 + e3c: 42 e0 ldi r20, 0x02 ; 2 + e3e: 58 de rcall .-848 ; 0xaf0 #if defined(INTERRUPT_CONTROL_ENDPOINT) USB_INT_Enable(USB_INT_RXSTPI); #endif EVENT_USB_Device_Reset(); - e38: ad d1 rcall .+858 ; 0x1194 + e40: 74 d1 rcall .+744 ; 0x112a USB_ResetInterface(); EVENT_USB_UIDChange(); } #endif } - e3a: ff 91 pop r31 - e3c: ef 91 pop r30 - e3e: bf 91 pop r27 - e40: af 91 pop r26 - e42: 9f 91 pop r25 - e44: 8f 91 pop r24 - e46: 7f 91 pop r23 - e48: 6f 91 pop r22 - e4a: 5f 91 pop r21 - e4c: 4f 91 pop r20 - e4e: 3f 91 pop r19 - e50: 2f 91 pop r18 - e52: 0f 90 pop r0 - e54: 0f be out 0x3f, r0 ; 63 - e56: 0f 90 pop r0 - e58: 1f 90 pop r1 - e5a: 18 95 reti - -00000e5c <__vector_12>: - -#if defined(INTERRUPT_CONTROL_ENDPOINT) && defined(USB_CAN_BE_DEVICE) -ISR(USB_COM_vect, ISR_BLOCK) -{ - e5c: 1f 92 push r1 - e5e: 0f 92 push r0 - e60: 0f b6 in r0, 0x3f ; 63 - e62: 0f 92 push r0 - e64: 11 24 eor r1, r1 - e66: 1f 93 push r17 - e68: 2f 93 push r18 - e6a: 3f 93 push r19 - e6c: 4f 93 push r20 - e6e: 5f 93 push r21 - e70: 6f 93 push r22 - e72: 7f 93 push r23 - e74: 8f 93 push r24 - e76: 9f 93 push r25 - e78: af 93 push r26 - e7a: bf 93 push r27 - e7c: ef 93 push r30 - e7e: ff 93 push r31 - */ - static inline uint8_t Endpoint_GetCurrentEndpoint(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline uint8_t Endpoint_GetCurrentEndpoint(void) - { - #if !defined(CONTROL_ONLY_DEVICE) - return ((UENUM & ENDPOINT_EPNUM_MASK) | Endpoint_GetEndpointDirection()); - e80: 10 91 e9 00 lds r17, 0x00E9 - e84: 1f 70 andi r17, 0x0F ; 15 - * \return The currently selected endpoint's direction, as a \c ENDPOINT_DIR_* mask. - */ - static inline uint8_t Endpoint_GetEndpointDirection(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline uint8_t Endpoint_GetEndpointDirection(void) - { - return (UECFG0X & (1 << EPDIR)) ? ENDPOINT_DIR_IN : ENDPOINT_DIR_OUT; - e86: 80 91 ec 00 lds r24, 0x00EC - */ - static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE; - static inline void Endpoint_SelectEndpoint(const uint8_t Address) - { - #if !defined(CONTROL_ONLY_DEVICE) - UENUM = (Address & ENDPOINT_EPNUM_MASK); - e8a: 10 92 e9 00 sts 0x00E9, r1 - break; - case USB_INT_SOFI: - UDIEN &= ~(1 << SOFE); - break; - case USB_INT_RXSTPI: - UEIENX &= ~(1 << RXSTPE); - e8e: 80 91 f0 00 lds r24, 0x00F0 - e92: 87 7f andi r24, 0xF7 ; 247 - e94: 80 93 f0 00 sts 0x00F0, r24 - static inline void GlobalInterruptEnable(void) - { - GCC_MEMORY_BARRIER(); - - #if (ARCH == ARCH_AVR8) - sei(); - e98: 78 94 sei - Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP); - USB_INT_Disable(USB_INT_RXSTPI); - - GlobalInterruptEnable(); - - USB_Device_ProcessControlRequest(); - e9a: 1b d0 rcall .+54 ; 0xed2 - e9c: 10 92 e9 00 sts 0x00E9, r1 - break; - case USB_INT_SOFI: - UDIEN |= (1 << SOFE); - break; - case USB_INT_RXSTPI: - UEIENX |= (1 << RXSTPE); - ea0: 80 91 f0 00 lds r24, 0x00F0 - ea4: 88 60 ori r24, 0x08 ; 8 - ea6: 80 93 f0 00 sts 0x00F0, r24 - eaa: 10 93 e9 00 sts 0x00E9, r17 - - Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP); - USB_INT_Enable(USB_INT_RXSTPI); - Endpoint_SelectEndpoint(PrevSelectedEndpoint); -} - eae: ff 91 pop r31 - eb0: ef 91 pop r30 - eb2: bf 91 pop r27 - eb4: af 91 pop r26 - eb6: 9f 91 pop r25 - eb8: 8f 91 pop r24 - eba: 7f 91 pop r23 - ebc: 6f 91 pop r22 - ebe: 5f 91 pop r21 - ec0: 4f 91 pop r20 - ec2: 3f 91 pop r19 - ec4: 2f 91 pop r18 - ec6: 1f 91 pop r17 - ec8: 0f 90 pop r0 - eca: 0f be out 0x3f, r0 ; 63 - ecc: 0f 90 pop r0 - ece: 1f 90 pop r1 - ed0: 18 95 reti - -00000ed2 : + e42: ff 91 pop r31 + e44: ef 91 pop r30 + e46: bf 91 pop r27 + e48: af 91 pop r26 + e4a: 9f 91 pop r25 + e4c: 8f 91 pop r24 + e4e: 7f 91 pop r23 + e50: 6f 91 pop r22 + e52: 5f 91 pop r21 + e54: 4f 91 pop r20 + e56: 3f 91 pop r19 + e58: 2f 91 pop r18 + e5a: 0f 90 pop r0 + e5c: 0f be out 0x3f, r0 ; 63 + e5e: 0f 90 pop r0 + e60: 1f 90 pop r1 + e62: 18 95 reti + +00000e64 : #if !defined(NO_DEVICE_REMOTE_WAKEUP) bool USB_Device_RemoteWakeupEnabled; #endif void USB_Device_ProcessControlRequest(void) { - ed2: 1f 93 push r17 - ed4: df 93 push r29 - ed6: cf 93 push r28 - ed8: cd b7 in r28, 0x3d ; 61 - eda: de b7 in r29, 0x3e ; 62 - edc: ac 97 sbiw r28, 0x2c ; 44 - ede: 0f b6 in r0, 0x3f ; 63 - ee0: f8 94 cli - ee2: de bf out 0x3e, r29 ; 62 - ee4: 0f be out 0x3f, r0 ; 63 - ee6: cd bf out 0x3d, r28 ; 61 + e64: 1f 93 push r17 + e66: df 93 push r29 + e68: cf 93 push r28 + e6a: cd b7 in r28, 0x3d ; 61 + e6c: de b7 in r29, 0x3e ; 62 + e6e: ac 97 sbiw r28, 0x2c ; 44 + e70: 0f b6 in r0, 0x3f ; 63 + e72: f8 94 cli + e74: de bf out 0x3e, r29 ; 62 + e76: 0f be out 0x3f, r0 ; 63 + e78: cd bf out 0x3d, r28 ; 61 USB_ControlRequest.bRequest = Endpoint_Read_8(); USB_ControlRequest.wValue = Endpoint_Read_16_LE(); USB_ControlRequest.wIndex = Endpoint_Read_16_LE(); USB_ControlRequest.wLength = Endpoint_Read_16_LE(); #else uint8_t* RequestHeader = (uint8_t*)&USB_ControlRequest; - ee8: ee e8 ldi r30, 0x8E ; 142 - eea: f2 e0 ldi r31, 0x02 ; 2 + e7a: ef e8 ldi r30, 0x8F ; 143 + e7c: f2 e0 ldi r31, 0x02 ; 2 * \return Next byte in the currently selected endpoint's FIFO buffer. */ static inline uint8_t Endpoint_Read_8(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; static inline uint8_t Endpoint_Read_8(void) { return UEDATX; - eec: 80 91 f1 00 lds r24, 0x00F1 + e7e: 80 91 f1 00 lds r24, 0x00F1 for (uint8_t RequestHeaderByte = 0; RequestHeaderByte < sizeof(USB_Request_Header_t); RequestHeaderByte++) *(RequestHeader++) = Endpoint_Read_8(); - ef0: 81 93 st Z+, r24 + e82: 81 93 st Z+, r24 USB_ControlRequest.wIndex = Endpoint_Read_16_LE(); USB_ControlRequest.wLength = Endpoint_Read_16_LE(); #else uint8_t* RequestHeader = (uint8_t*)&USB_ControlRequest; for (uint8_t RequestHeaderByte = 0; RequestHeaderByte < sizeof(USB_Request_Header_t); RequestHeaderByte++) - ef2: 22 e0 ldi r18, 0x02 ; 2 - ef4: e6 39 cpi r30, 0x96 ; 150 - ef6: f2 07 cpc r31, r18 - ef8: c9 f7 brne .-14 ; 0xeec + e84: 22 e0 ldi r18, 0x02 ; 2 + e86: e7 39 cpi r30, 0x97 ; 151 + e88: f2 07 cpc r31, r18 + e8a: c9 f7 brne .-14 ; 0xe7e *(RequestHeader++) = Endpoint_Read_8(); #endif EVENT_USB_Device_ControlRequest(); - efa: 86 db rcall .-2292 ; 0x608 + e8c: bd db rcall .-2182 ; 0x608 * \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise. */ static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; static inline bool Endpoint_IsSETUPReceived(void) { return ((UEINTX & (1 << RXSTPI)) ? true : false); - efc: 80 91 e8 00 lds r24, 0x00E8 + e8e: 80 91 e8 00 lds r24, 0x00E8 if (Endpoint_IsSETUPReceived()) - f00: 83 ff sbrs r24, 3 - f02: 30 c1 rjmp .+608 ; 0x1164 + e92: 83 ff sbrs r24, 3 + e94: 32 c1 rjmp .+612 ; 0x10fa { uint8_t bmRequestType = USB_ControlRequest.bmRequestType; - f04: 80 91 8e 02 lds r24, 0x028E + e96: 80 91 8f 02 lds r24, 0x028F switch (USB_ControlRequest.bRequest) - f08: 20 91 8f 02 lds r18, 0x028F - f0c: 25 30 cpi r18, 0x05 ; 5 - f0e: 09 f4 brne .+2 ; 0xf12 - f10: 84 c0 rjmp .+264 ; 0x101a - f12: 26 30 cpi r18, 0x06 ; 6 - f14: 40 f4 brcc .+16 ; 0xf26 - f16: 21 30 cpi r18, 0x01 ; 1 - f18: a1 f1 breq .+104 ; 0xf82 - f1a: 21 30 cpi r18, 0x01 ; 1 - f1c: 70 f0 brcs .+28 ; 0xf3a - f1e: 23 30 cpi r18, 0x03 ; 3 - f20: 09 f0 breq .+2 ; 0xf24 - f22: 20 c1 rjmp .+576 ; 0x1164 - f24: 2e c0 rjmp .+92 ; 0xf82 - f26: 28 30 cpi r18, 0x08 ; 8 - f28: 09 f4 brne .+2 ; 0xf2c - f2a: ef c0 rjmp .+478 ; 0x110a - f2c: 29 30 cpi r18, 0x09 ; 9 - f2e: 09 f4 brne .+2 ; 0xf32 - f30: fe c0 rjmp .+508 ; 0x112e - f32: 26 30 cpi r18, 0x06 ; 6 - f34: 09 f0 breq .+2 ; 0xf38 - f36: 16 c1 rjmp .+556 ; 0x1164 - f38: 92 c0 rjmp .+292 ; 0x105e + e9a: 20 91 90 02 lds r18, 0x0290 + e9e: 25 30 cpi r18, 0x05 ; 5 + ea0: 09 f4 brne .+2 ; 0xea4 + ea2: 84 c0 rjmp .+264 ; 0xfac + ea4: 26 30 cpi r18, 0x06 ; 6 + ea6: 40 f4 brcc .+16 ; 0xeb8 + ea8: 21 30 cpi r18, 0x01 ; 1 + eaa: a1 f1 breq .+104 ; 0xf14 + eac: 21 30 cpi r18, 0x01 ; 1 + eae: 70 f0 brcs .+28 ; 0xecc + eb0: 23 30 cpi r18, 0x03 ; 3 + eb2: 09 f0 breq .+2 ; 0xeb6 + eb4: 22 c1 rjmp .+580 ; 0x10fa + eb6: 2e c0 rjmp .+92 ; 0xf14 + eb8: 28 30 cpi r18, 0x08 ; 8 + eba: 09 f4 brne .+2 ; 0xebe + ebc: f0 c0 rjmp .+480 ; 0x109e + ebe: 29 30 cpi r18, 0x09 ; 9 + ec0: 09 f4 brne .+2 ; 0xec4 + ec2: ff c0 rjmp .+510 ; 0x10c2 + ec4: 26 30 cpi r18, 0x06 ; 6 + ec6: 09 f0 breq .+2 ; 0xeca + ec8: 18 c1 rjmp .+560 ; 0x10fa + eca: 93 c0 rjmp .+294 ; 0xff2 { case REQ_GetStatus: if ((bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE)) || - f3a: 80 38 cpi r24, 0x80 ; 128 - f3c: 21 f0 breq .+8 ; 0xf46 - f3e: 82 38 cpi r24, 0x82 ; 130 - f40: 09 f0 breq .+2 ; 0xf44 - f42: 10 c1 rjmp .+544 ; 0x1164 - f44: 08 c0 rjmp .+16 ; 0xf56 + ecc: 80 38 cpi r24, 0x80 ; 128 + ece: 21 f0 breq .+8 ; 0xed8 + ed0: 82 38 cpi r24, 0x82 ; 130 + ed2: 09 f0 breq .+2 ; 0xed6 + ed4: 12 c1 rjmp .+548 ; 0x10fa + ed6: 08 c0 rjmp .+16 ; 0xee8 Endpoint_ClearOUT(); } static void USB_Device_GetStatus(void) { uint8_t CurrentStatus = 0; - f46: 80 91 8b 02 lds r24, 0x028B + ed8: 80 91 8b 02 lds r24, 0x028B if (USB_Device_CurrentlySelfPowered) CurrentStatus |= FEATURE_SELFPOWERED_ENABLED; #endif #if !defined(NO_DEVICE_REMOTE_WAKEUP) if (USB_Device_RemoteWakeupEnabled) - f4a: 90 91 8c 02 lds r25, 0x028C - f4e: 99 23 and r25, r25 - f50: 71 f0 breq .+28 ; 0xf6e + edc: 90 91 8c 02 lds r25, 0x028C + ee0: 99 23 and r25, r25 + ee2: 71 f0 breq .+28 ; 0xf00 CurrentStatus |= FEATURE_REMOTE_WAKEUP_ENABLED; - f52: 82 60 ori r24, 0x02 ; 2 - f54: 0c c0 rjmp .+24 ; 0xf6e + ee4: 82 60 ori r24, 0x02 ; 2 + ee6: 0c c0 rjmp .+24 ; 0xf00 */ static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE; static inline void Endpoint_SelectEndpoint(const uint8_t Address) { #if !defined(CONTROL_ONLY_DEVICE) UENUM = (Address & ENDPOINT_EPNUM_MASK); - f56: 80 91 92 02 lds r24, 0x0292 - f5a: 8f 70 andi r24, 0x0F ; 15 - f5c: 80 93 e9 00 sts 0x00E9, r24 + ee8: 80 91 93 02 lds r24, 0x0293 + eec: 8f 70 andi r24, 0x0F ; 15 + eee: 80 93 e9 00 sts 0x00E9, r24 * \return Boolean \c true if the currently selected endpoint is stalled, \c false otherwise. */ static inline bool Endpoint_IsStalled(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; static inline bool Endpoint_IsStalled(void) { return ((UECONX & (1 << STALLRQ)) ? true : false); - f60: 90 91 eb 00 lds r25, 0x00EB + ef2: 90 91 eb 00 lds r25, 0x00EB break; case (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_ENDPOINT): #if !defined(CONTROL_ONLY_DEVICE) Endpoint_SelectEndpoint((uint8_t)USB_ControlRequest.wIndex & ENDPOINT_EPNUM_MASK); CurrentStatus = Endpoint_IsStalled(); - f64: 81 e0 ldi r24, 0x01 ; 1 - f66: 95 ff sbrs r25, 5 - f68: 80 e0 ldi r24, 0x00 ; 0 + ef6: 81 e0 ldi r24, 0x01 ; 1 + ef8: 95 ff sbrs r25, 5 + efa: 80 e0 ldi r24, 0x00 ; 0 */ static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE; static inline void Endpoint_SelectEndpoint(const uint8_t Address) { #if !defined(CONTROL_ONLY_DEVICE) UENUM = (Address & ENDPOINT_EPNUM_MASK); - f6a: 10 92 e9 00 sts 0x00E9, r1 + efc: 10 92 e9 00 sts 0x00E9, r1 * \note This is not applicable for non CONTROL type endpoints. */ static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE; static inline void Endpoint_ClearSETUP(void) { UEINTX &= ~(1 << RXSTPI); - f6e: 90 91 e8 00 lds r25, 0x00E8 - f72: 97 7f andi r25, 0xF7 ; 247 - f74: 90 93 e8 00 sts 0x00E8, r25 + f00: 90 91 e8 00 lds r25, 0x00E8 + f04: 97 7f andi r25, 0xF7 ; 247 + f06: 90 93 e8 00 sts 0x00E8, r25 * \param[in] Data Data to write to the currently selected endpoint's FIFO buffer. */ static inline void Endpoint_Write_16_LE(const uint16_t Data) ATTR_ALWAYS_INLINE; static inline void Endpoint_Write_16_LE(const uint16_t Data) { UEDATX = (Data & 0xFF); - f78: 80 93 f1 00 sts 0x00F1, r24 + f0a: 80 93 f1 00 sts 0x00F1, r24 UEDATX = (Data >> 8); - f7c: 10 92 f1 00 sts 0x00F1, r1 - f80: cf c0 rjmp .+414 ; 0x1120 + f0e: 10 92 f1 00 sts 0x00F1, r1 + f12: d0 c0 rjmp .+416 ; 0x10b4 } break; case REQ_ClearFeature: case REQ_SetFeature: if ((bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_DEVICE)) || - f82: 88 23 and r24, r24 - f84: 19 f0 breq .+6 ; 0xf8c - f86: 82 30 cpi r24, 0x02 ; 2 - f88: 09 f0 breq .+2 ; 0xf8c - f8a: ec c0 rjmp .+472 ; 0x1164 + f14: 88 23 and r24, r24 + f16: 19 f0 breq .+6 ; 0xf1e + f18: 82 30 cpi r24, 0x02 ; 2 + f1a: 09 f0 breq .+2 ; 0xf1e + f1c: ee c0 rjmp .+476 ; 0x10fa Endpoint_ClearStatusStage(); } static void USB_Device_ClearSetFeature(void) { switch (USB_ControlRequest.bmRequestType & CONTROL_REQTYPE_RECIPIENT) - f8c: 90 e0 ldi r25, 0x00 ; 0 - f8e: 8f 71 andi r24, 0x1F ; 31 - f90: 90 70 andi r25, 0x00 ; 0 - f92: 00 97 sbiw r24, 0x00 ; 0 - f94: 29 f0 breq .+10 ; 0xfa0 - f96: 82 30 cpi r24, 0x02 ; 2 - f98: 91 05 cpc r25, r1 - f9a: 09 f0 breq .+2 ; 0xf9e - f9c: e3 c0 rjmp .+454 ; 0x1164 - f9e: 0b c0 rjmp .+22 ; 0xfb6 + f1e: 90 e0 ldi r25, 0x00 ; 0 + f20: 8f 71 andi r24, 0x1F ; 31 + f22: 90 70 andi r25, 0x00 ; 0 + f24: 00 97 sbiw r24, 0x00 ; 0 + f26: 29 f0 breq .+10 ; 0xf32 + f28: 82 30 cpi r24, 0x02 ; 2 + f2a: 91 05 cpc r25, r1 + f2c: 09 f0 breq .+2 ; 0xf30 + f2e: e5 c0 rjmp .+458 ; 0x10fa + f30: 0b c0 rjmp .+22 ; 0xf48 { #if !defined(NO_DEVICE_REMOTE_WAKEUP) case REQREC_DEVICE: if ((uint8_t)USB_ControlRequest.wValue == FEATURE_SEL_DeviceRemoteWakeup) - fa0: 80 91 90 02 lds r24, 0x0290 - fa4: 81 30 cpi r24, 0x01 ; 1 - fa6: 09 f0 breq .+2 ; 0xfaa - fa8: dd c0 rjmp .+442 ; 0x1164 + f32: 80 91 91 02 lds r24, 0x0291 + f36: 81 30 cpi r24, 0x01 ; 1 + f38: 09 f0 breq .+2 ; 0xf3c + f3a: df c0 rjmp .+446 ; 0x10fa USB_Device_RemoteWakeupEnabled = (USB_ControlRequest.bRequest == REQ_SetFeature); - faa: 23 30 cpi r18, 0x03 ; 3 - fac: 09 f0 breq .+2 ; 0xfb0 - fae: 80 e0 ldi r24, 0x00 ; 0 - fb0: 80 93 8c 02 sts 0x028C, r24 - fb4: 2c c0 rjmp .+88 ; 0x100e + f3c: 23 30 cpi r18, 0x03 ; 3 + f3e: 09 f0 breq .+2 ; 0xf42 + f40: 80 e0 ldi r24, 0x00 ; 0 + f42: 80 93 8c 02 sts 0x028C, r24 + f46: 2c c0 rjmp .+88 ; 0xfa0 break; #endif #if !defined(CONTROL_ONLY_DEVICE) case REQREC_ENDPOINT: if ((uint8_t)USB_ControlRequest.wValue == FEATURE_SEL_EndpointHalt) - fb6: 80 91 90 02 lds r24, 0x0290 - fba: 88 23 and r24, r24 - fbc: 41 f5 brne .+80 ; 0x100e + f48: 80 91 91 02 lds r24, 0x0291 + f4c: 88 23 and r24, r24 + f4e: 41 f5 brne .+80 ; 0xfa0 { uint8_t EndpointIndex = ((uint8_t)USB_ControlRequest.wIndex & ENDPOINT_EPNUM_MASK); - fbe: 20 91 92 02 lds r18, 0x0292 - fc2: 2f 70 andi r18, 0x0F ; 15 + f50: 20 91 93 02 lds r18, 0x0293 + f54: 2f 70 andi r18, 0x0F ; 15 if (EndpointIndex == ENDPOINT_CONTROLEP) - fc4: 09 f4 brne .+2 ; 0xfc8 - fc6: ce c0 rjmp .+412 ; 0x1164 + f56: 09 f4 brne .+2 ; 0xf5a + f58: d0 c0 rjmp .+416 ; 0x10fa */ static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE; static inline void Endpoint_SelectEndpoint(const uint8_t Address) { #if !defined(CONTROL_ONLY_DEVICE) UENUM = (Address & ENDPOINT_EPNUM_MASK); - fc8: 20 93 e9 00 sts 0x00E9, r18 + f5a: 20 93 e9 00 sts 0x00E9, r18 * \return Boolean \c true if the currently selected endpoint is enabled, \c false otherwise. */ static inline bool Endpoint_IsEnabled(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; static inline bool Endpoint_IsEnabled(void) { return ((UECONX & (1 << EPEN)) ? true : false); - fcc: 80 91 eb 00 lds r24, 0x00EB + f5e: 80 91 eb 00 lds r24, 0x00EB return; Endpoint_SelectEndpoint(EndpointIndex); if (Endpoint_IsEnabled()) - fd0: 80 ff sbrs r24, 0 - fd2: 1d c0 rjmp .+58 ; 0x100e + f62: 80 ff sbrs r24, 0 + f64: 1d c0 rjmp .+58 ; 0xfa0 { if (USB_ControlRequest.bRequest == REQ_SetFeature) - fd4: 80 91 8f 02 lds r24, 0x028F - fd8: 83 30 cpi r24, 0x03 ; 3 - fda: 21 f4 brne .+8 ; 0xfe4 + f66: 80 91 90 02 lds r24, 0x0290 + f6a: 83 30 cpi r24, 0x03 ; 3 + f6c: 21 f4 brne .+8 ; 0xf76 * \ingroup Group_EndpointPacketManagement_AVR8 */ static inline void Endpoint_StallTransaction(void) ATTR_ALWAYS_INLINE; static inline void Endpoint_StallTransaction(void) { UECONX |= (1 << STALLRQ); - fdc: 80 91 eb 00 lds r24, 0x00EB - fe0: 80 62 ori r24, 0x20 ; 32 - fe2: 13 c0 rjmp .+38 ; 0x100a + f6e: 80 91 eb 00 lds r24, 0x00EB + f72: 80 62 ori r24, 0x20 ; 32 + f74: 13 c0 rjmp .+38 ; 0xf9c * \ingroup Group_EndpointPacketManagement_AVR8 */ static inline void Endpoint_ClearStall(void) ATTR_ALWAYS_INLINE; static inline void Endpoint_ClearStall(void) { UECONX |= (1 << STALLRQC); - fe4: 80 91 eb 00 lds r24, 0x00EB - fe8: 80 61 ori r24, 0x10 ; 16 - fea: 80 93 eb 00 sts 0x00EB, r24 + f76: 80 91 eb 00 lds r24, 0x00EB + f7a: 80 61 ori r24, 0x10 ; 16 + f7c: 80 93 eb 00 sts 0x00EB, r24 * \param[in] Address Endpoint address whose FIFO buffers are to be reset. */ static inline void Endpoint_ResetEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE; static inline void Endpoint_ResetEndpoint(const uint8_t Address) { UERST = (1 << (Address & ENDPOINT_EPNUM_MASK)); - fee: 81 e0 ldi r24, 0x01 ; 1 - ff0: 90 e0 ldi r25, 0x00 ; 0 - ff2: 02 c0 rjmp .+4 ; 0xff8 - ff4: 88 0f add r24, r24 - ff6: 99 1f adc r25, r25 - ff8: 2a 95 dec r18 - ffa: e2 f7 brpl .-8 ; 0xff4 - ffc: 80 93 ea 00 sts 0x00EA, r24 + f80: 81 e0 ldi r24, 0x01 ; 1 + f82: 90 e0 ldi r25, 0x00 ; 0 + f84: 02 c0 rjmp .+4 ; 0xf8a + f86: 88 0f add r24, r24 + f88: 99 1f adc r25, r25 + f8a: 2a 95 dec r18 + f8c: e2 f7 brpl .-8 ; 0xf86 + f8e: 80 93 ea 00 sts 0x00EA, r24 UERST = 0; - 1000: 10 92 ea 00 sts 0x00EA, r1 + f92: 10 92 ea 00 sts 0x00EA, r1 /** Resets the data toggle of the currently selected endpoint. */ static inline void Endpoint_ResetDataToggle(void) ATTR_ALWAYS_INLINE; static inline void Endpoint_ResetDataToggle(void) { UECONX |= (1 << RSTDT); - 1004: 80 91 eb 00 lds r24, 0x00EB - 1008: 88 60 ori r24, 0x08 ; 8 - 100a: 80 93 eb 00 sts 0x00EB, r24 + f96: 80 91 eb 00 lds r24, 0x00EB + f9a: 88 60 ori r24, 0x08 ; 8 + f9c: 80 93 eb 00 sts 0x00EB, r24 */ static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE; static inline void Endpoint_SelectEndpoint(const uint8_t Address) { #if !defined(CONTROL_ONLY_DEVICE) UENUM = (Address & ENDPOINT_EPNUM_MASK); - 100e: 10 92 e9 00 sts 0x00E9, r1 + fa0: 10 92 e9 00 sts 0x00E9, r1 * \note This is not applicable for non CONTROL type endpoints. */ static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE; static inline void Endpoint_ClearSETUP(void) { UEINTX &= ~(1 << RXSTPI); - 1012: 80 91 e8 00 lds r24, 0x00E8 - 1016: 87 7f andi r24, 0xF7 ; 247 - 1018: 86 c0 rjmp .+268 ; 0x1126 + fa4: 80 91 e8 00 lds r24, 0x00E8 + fa8: 87 7f andi r24, 0xF7 ; 247 + faa: 87 c0 rjmp .+270 ; 0x10ba USB_Device_ClearSetFeature(); } break; case REQ_SetAddress: if (bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_DEVICE)) - 101a: 88 23 and r24, r24 - 101c: 09 f0 breq .+2 ; 0x1020 - 101e: a2 c0 rjmp .+324 ; 0x1164 + fac: 88 23 and r24, r24 + fae: 09 f0 breq .+2 ; 0xfb2 + fb0: a4 c0 rjmp .+328 ; 0x10fa } } static void USB_Device_SetAddress(void) { uint8_t DeviceAddress = (USB_ControlRequest.wValue & 0x7F); - 1020: 10 91 90 02 lds r17, 0x0290 - 1024: 1f 77 andi r17, 0x7F ; 127 + fb2: 10 91 91 02 lds r17, 0x0291 + fb6: 1f 77 andi r17, 0x7F ; 127 #endif static inline void USB_Device_SetDeviceAddress(const uint8_t Address) ATTR_ALWAYS_INLINE; static inline void USB_Device_SetDeviceAddress(const uint8_t Address) { UDADDR = (UDADDR & (1 << ADDEN)) | (Address & 0x7F); - 1026: 80 91 e3 00 lds r24, 0x00E3 - 102a: 80 78 andi r24, 0x80 ; 128 - 102c: 81 2b or r24, r17 - 102e: 80 93 e3 00 sts 0x00E3, r24 - 1032: 80 91 e8 00 lds r24, 0x00E8 - 1036: 87 7f andi r24, 0xF7 ; 247 - 1038: 80 93 e8 00 sts 0x00E8, r24 + fb8: 80 91 e3 00 lds r24, 0x00E3 + fbc: 80 78 andi r24, 0x80 ; 128 + fbe: 81 2b or r24, r17 + fc0: 80 93 e3 00 sts 0x00E3, r24 + fc4: 80 91 e8 00 lds r24, 0x00E8 + fc8: 87 7f andi r24, 0xF7 ; 247 + fca: 80 93 e8 00 sts 0x00E8, r24 USB_Device_SetDeviceAddress(DeviceAddress); Endpoint_ClearSETUP(); Endpoint_ClearStatusStage(); - 103c: d2 dd rcall .-1116 ; 0xbe2 + fce: 0b de rcall .-1002 ; 0xbe6 * \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise. */ static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; static inline bool Endpoint_IsINReady(void) { return ((UEINTX & (1 << TXINI)) ? true : false); - 103e: 80 91 e8 00 lds r24, 0x00E8 + fd0: 80 91 e8 00 lds r24, 0x00E8 while (!(Endpoint_IsINReady())); - 1042: 80 ff sbrs r24, 0 - 1044: fc cf rjmp .-8 ; 0x103e + fd4: 80 ff sbrs r24, 0 + fd6: fc cf rjmp .-8 ; 0xfd0 static inline void USB_Device_EnableDeviceAddress(const uint8_t Address) ATTR_ALWAYS_INLINE; static inline void USB_Device_EnableDeviceAddress(const uint8_t Address) { (void)Address; UDADDR |= (1 << ADDEN); - 1046: 80 91 e3 00 lds r24, 0x00E3 - 104a: 80 68 ori r24, 0x80 ; 128 - 104c: 80 93 e3 00 sts 0x00E3, r24 + fd8: 80 91 e3 00 lds r24, 0x00E3 + fdc: 80 68 ori r24, 0x80 ; 128 + fde: 80 93 e3 00 sts 0x00E3, r24 USB_Device_EnableDeviceAddress(DeviceAddress); USB_DeviceState = (DeviceAddress) ? DEVICE_STATE_Addressed : DEVICE_STATE_Default; - 1050: 11 23 and r17, r17 - 1052: 11 f0 breq .+4 ; 0x1058 - 1054: 83 e0 ldi r24, 0x03 ; 3 - 1056: 01 c0 rjmp .+2 ; 0x105a - 1058: 82 e0 ldi r24, 0x02 ; 2 - 105a: 8e bb out 0x1e, r24 ; 30 - 105c: 83 c0 rjmp .+262 ; 0x1164 + fe2: 11 23 and r17, r17 + fe4: 11 f0 breq .+4 ; 0xfea + fe6: 83 e0 ldi r24, 0x03 ; 3 + fe8: 01 c0 rjmp .+2 ; 0xfec + fea: 82 e0 ldi r24, 0x02 ; 2 + fec: 80 93 8e 02 sts 0x028E, r24 + ff0: 84 c0 rjmp .+264 ; 0x10fa if (bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_DEVICE)) USB_Device_SetAddress(); break; case REQ_GetDescriptor: if ((bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE)) || - 105e: 80 58 subi r24, 0x80 ; 128 - 1060: 82 30 cpi r24, 0x02 ; 2 - 1062: 08 f0 brcs .+2 ; 0x1066 - 1064: 7f c0 rjmp .+254 ; 0x1164 + ff2: 80 58 subi r24, 0x80 ; 128 + ff4: 82 30 cpi r24, 0x02 ; 2 + ff6: 08 f0 brcs .+2 ; 0xffa + ff8: 80 c0 rjmp .+256 ; 0x10fa !(defined(USE_FLASH_DESCRIPTORS) || defined(USE_EEPROM_DESCRIPTORS) || defined(USE_RAM_DESCRIPTORS)) uint8_t DescriptorAddressSpace; #endif #if !defined(NO_INTERNAL_SERIAL) && (USE_INTERNAL_SERIAL != NO_DESCRIPTOR) if (USB_ControlRequest.wValue == ((DTYPE_String << 8) | USE_INTERNAL_SERIAL)) - 1066: 80 91 90 02 lds r24, 0x0290 - 106a: 90 91 91 02 lds r25, 0x0291 - 106e: 23 e0 ldi r18, 0x03 ; 3 - 1070: 8c 3d cpi r24, 0xDC ; 220 - 1072: 92 07 cpc r25, r18 - 1074: 91 f5 brne .+100 ; 0x10da + ffa: 80 91 91 02 lds r24, 0x0291 + ffe: 90 91 92 02 lds r25, 0x0292 + 1002: 23 e0 ldi r18, 0x03 ; 3 + 1004: 8c 3d cpi r24, 0xDC ; 220 + 1006: 92 07 cpc r25, r18 + 1008: 91 f5 brne .+100 ; 0x106e { USB_Descriptor_Header_t Header; uint16_t UnicodeString[INTERNAL_SERIAL_LENGTH_BITS / 4]; } SignatureDescriptor; SignatureDescriptor.Header.Type = DTYPE_String; - 1076: 83 e0 ldi r24, 0x03 ; 3 - 1078: 8c 83 std Y+4, r24 ; 0x04 + 100a: 83 e0 ldi r24, 0x03 ; 3 + 100c: 8c 83 std Y+4, r24 ; 0x04 SignatureDescriptor.Header.Size = USB_STRING_LEN(INTERNAL_SERIAL_LENGTH_BITS / 4); - 107a: 8a e2 ldi r24, 0x2A ; 42 - 107c: 8b 83 std Y+3, r24 ; 0x03 + 100e: 8a e2 ldi r24, 0x2A ; 42 + 1010: 8b 83 std Y+3, r24 ; 0x03 static inline uint_reg_t GetGlobalInterruptMask(void) { GCC_MEMORY_BARRIER(); #if (ARCH == ARCH_AVR8) return SREG; - 107e: 5f b7 in r21, 0x3f ; 63 + 1012: 5f b7 in r21, 0x3f ; 63 static inline void GlobalInterruptDisable(void) { GCC_MEMORY_BARRIER(); #if (ARCH == ARCH_AVR8) cli(); - 1080: f8 94 cli + 1014: f8 94 cli __builtin_ssrf(AVR32_SR_GM_OFFSET); #elif (ARCH == ARCH_XMEGA) cli(); #endif GCC_MEMORY_BARRIER(); - 1082: de 01 movw r26, r28 - 1084: 15 96 adiw r26, 0x05 ; 5 - 1086: 80 e0 ldi r24, 0x00 ; 0 - 1088: 90 e0 ldi r25, 0x00 ; 0 + 1016: de 01 movw r26, r28 + 1018: 15 96 adiw r26, 0x05 ; 5 + 101a: 80 e0 ldi r24, 0x00 ; 0 + 101c: 90 e0 ldi r25, 0x00 ; 0 static inline void USB_Device_GetSerialString(uint16_t* const UnicodeString) { uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask(); GlobalInterruptDisable(); uint8_t SigReadAddress = INTERNAL_SERIAL_START_ADDRESS; - 108a: 4e e0 ldi r20, 0x0E ; 14 + 101e: 4e e0 ldi r20, 0x0E ; 14 for (uint8_t SerialCharNum = 0; SerialCharNum < (INTERNAL_SERIAL_LENGTH_BITS / 4); SerialCharNum++) { uint8_t SerialByte = boot_signature_byte_get(SigReadAddress); - 108c: 61 e2 ldi r22, 0x21 ; 33 - 108e: e4 2f mov r30, r20 - 1090: f0 e0 ldi r31, 0x00 ; 0 - 1092: 60 93 57 00 sts 0x0057, r22 - 1096: e4 91 lpm r30, Z+ + 1020: 61 e2 ldi r22, 0x21 ; 33 + 1022: e4 2f mov r30, r20 + 1024: f0 e0 ldi r31, 0x00 ; 0 + 1026: 60 93 57 00 sts 0x0057, r22 + 102a: e4 91 lpm r30, Z+ if (SerialCharNum & 0x01) - 1098: 80 ff sbrs r24, 0 - 109a: 03 c0 rjmp .+6 ; 0x10a2 + 102c: 80 ff sbrs r24, 0 + 102e: 03 c0 rjmp .+6 ; 0x1036 { SerialByte >>= 4; - 109c: e2 95 swap r30 - 109e: ef 70 andi r30, 0x0F ; 15 + 1030: e2 95 swap r30 + 1032: ef 70 andi r30, 0x0F ; 15 SigReadAddress++; - 10a0: 4f 5f subi r20, 0xFF ; 255 + 1034: 4f 5f subi r20, 0xFF ; 255 } SerialByte &= 0x0F; - 10a2: ef 70 andi r30, 0x0F ; 15 - 10a4: 2e 2f mov r18, r30 - 10a6: 30 e0 ldi r19, 0x00 ; 0 + 1036: ef 70 andi r30, 0x0F ; 15 + 1038: 2e 2f mov r18, r30 + 103a: 30 e0 ldi r19, 0x00 ; 0 UnicodeString[SerialCharNum] = cpu_to_le16((SerialByte >= 10) ? - 10a8: ea 30 cpi r30, 0x0A ; 10 - 10aa: 18 f0 brcs .+6 ; 0x10b2 - 10ac: 29 5c subi r18, 0xC9 ; 201 - 10ae: 3f 4f sbci r19, 0xFF ; 255 - 10b0: 02 c0 rjmp .+4 ; 0x10b6 - 10b2: 20 5d subi r18, 0xD0 ; 208 - 10b4: 3f 4f sbci r19, 0xFF ; 255 - 10b6: 2d 93 st X+, r18 - 10b8: 3d 93 st X+, r19 - 10ba: 01 96 adiw r24, 0x01 ; 1 + 103c: ea 30 cpi r30, 0x0A ; 10 + 103e: 18 f0 brcs .+6 ; 0x1046 + 1040: 29 5c subi r18, 0xC9 ; 201 + 1042: 3f 4f sbci r19, 0xFF ; 255 + 1044: 02 c0 rjmp .+4 ; 0x104a + 1046: 20 5d subi r18, 0xD0 ; 208 + 1048: 3f 4f sbci r19, 0xFF ; 255 + 104a: 2d 93 st X+, r18 + 104c: 3d 93 st X+, r19 + 104e: 01 96 adiw r24, 0x01 ; 1 uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask(); GlobalInterruptDisable(); uint8_t SigReadAddress = INTERNAL_SERIAL_START_ADDRESS; for (uint8_t SerialCharNum = 0; SerialCharNum < (INTERNAL_SERIAL_LENGTH_BITS / 4); SerialCharNum++) - 10bc: 84 31 cpi r24, 0x14 ; 20 - 10be: 91 05 cpc r25, r1 - 10c0: 31 f7 brne .-52 ; 0x108e + 1050: 84 31 cpi r24, 0x14 ; 20 + 1052: 91 05 cpc r25, r1 + 1054: 31 f7 brne .-52 ; 0x1022 static inline void SetGlobalInterruptMask(const uint_reg_t GlobalIntState) { GCC_MEMORY_BARRIER(); #if (ARCH == ARCH_AVR8) SREG = GlobalIntState; - 10c2: 5f bf out 0x3f, r21 ; 63 + 1056: 5f bf out 0x3f, r21 ; 63 * \note This is not applicable for non CONTROL type endpoints. */ static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE; static inline void Endpoint_ClearSETUP(void) { UEINTX &= ~(1 << RXSTPI); - 10c4: 80 91 e8 00 lds r24, 0x00E8 - 10c8: 87 7f andi r24, 0xF7 ; 247 - 10ca: 80 93 e8 00 sts 0x00E8, r24 + 1058: 80 91 e8 00 lds r24, 0x00E8 + 105c: 87 7f andi r24, 0xF7 ; 247 + 105e: 80 93 e8 00 sts 0x00E8, r24 USB_Device_GetSerialString(SignatureDescriptor.UnicodeString); Endpoint_ClearSETUP(); Endpoint_Write_Control_Stream_LE(&SignatureDescriptor, sizeof(SignatureDescriptor)); - 10ce: ce 01 movw r24, r28 - 10d0: 03 96 adiw r24, 0x03 ; 3 - 10d2: 6a e2 ldi r22, 0x2A ; 42 - 10d4: 70 e0 ldi r23, 0x00 ; 0 - 10d6: 55 dc rcall .-1878 ; 0x982 - 10d8: 12 c0 rjmp .+36 ; 0x10fe + 1062: ce 01 movw r24, r28 + 1064: 03 96 adiw r24, 0x03 ; 3 + 1066: 6a e2 ldi r22, 0x2A ; 42 + 1068: 70 e0 ldi r23, 0x00 ; 0 + 106a: 89 dc rcall .-1774 ; 0x97e + 106c: 12 c0 rjmp .+36 ; 0x1092 USB_Device_GetInternalSerialDescriptor(); return; } #endif if ((DescriptorSize = CALLBACK_USB_GetDescriptor(USB_ControlRequest.wValue, USB_ControlRequest.wIndex, - 10da: 60 91 92 02 lds r22, 0x0292 - 10de: ae 01 movw r20, r28 - 10e0: 4f 5f subi r20, 0xFF ; 255 - 10e2: 5f 4f sbci r21, 0xFF ; 255 - 10e4: 21 dc rcall .-1982 ; 0x928 - 10e6: bc 01 movw r22, r24 - 10e8: 00 97 sbiw r24, 0x00 ; 0 - 10ea: 09 f4 brne .+2 ; 0x10ee - 10ec: 3b c0 rjmp .+118 ; 0x1164 - 10ee: 80 91 e8 00 lds r24, 0x00E8 - 10f2: 87 7f andi r24, 0xF7 ; 247 - 10f4: 80 93 e8 00 sts 0x00E8, r24 + 106e: 60 91 93 02 lds r22, 0x0293 + 1072: ae 01 movw r20, r28 + 1074: 4f 5f subi r20, 0xFF ; 255 + 1076: 5f 4f sbci r21, 0xFF ; 255 + 1078: 55 dc rcall .-1878 ; 0x924 + 107a: bc 01 movw r22, r24 + 107c: 00 97 sbiw r24, 0x00 ; 0 + 107e: 09 f4 brne .+2 ; 0x1082 + 1080: 3c c0 rjmp .+120 ; 0x10fa + 1082: 80 91 e8 00 lds r24, 0x00E8 + 1086: 87 7f andi r24, 0xF7 ; 247 + 1088: 80 93 e8 00 sts 0x00E8, r24 #if defined(USE_RAM_DESCRIPTORS) || !defined(ARCH_HAS_MULTI_ADDRESS_SPACE) Endpoint_Write_Control_Stream_LE(DescriptorPointer, DescriptorSize); #elif defined(USE_EEPROM_DESCRIPTORS) Endpoint_Write_Control_EStream_LE(DescriptorPointer, DescriptorSize); #elif defined(USE_FLASH_DESCRIPTORS) Endpoint_Write_Control_PStream_LE(DescriptorPointer, DescriptorSize); - 10f8: 89 81 ldd r24, Y+1 ; 0x01 - 10fa: 9a 81 ldd r25, Y+2 ; 0x02 - 10fc: 9c dc rcall .-1736 ; 0xa36 + 108c: 89 81 ldd r24, Y+1 ; 0x01 + 108e: 9a 81 ldd r25, Y+2 ; 0x02 + 1090: d2 dc rcall .-1628 ; 0xa36 */ static inline void Endpoint_ClearOUT(void) ATTR_ALWAYS_INLINE; static inline void Endpoint_ClearOUT(void) { #if !defined(CONTROL_ONLY_DEVICE) UEINTX &= ~((1 << RXOUTI) | (1 << FIFOCON)); - 10fe: 80 91 e8 00 lds r24, 0x00E8 - 1102: 8b 77 andi r24, 0x7B ; 123 - 1104: 80 93 e8 00 sts 0x00E8, r24 - 1108: 2d c0 rjmp .+90 ; 0x1164 + 1092: 80 91 e8 00 lds r24, 0x00E8 + 1096: 8b 77 andi r24, 0x7B ; 123 + 1098: 80 93 e8 00 sts 0x00E8, r24 + 109c: 2e c0 rjmp .+92 ; 0x10fa USB_Device_GetDescriptor(); } break; case REQ_GetConfiguration: if (bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE)) - 110a: 80 38 cpi r24, 0x80 ; 128 - 110c: 59 f5 brne .+86 ; 0x1164 + 109e: 80 38 cpi r24, 0x80 ; 128 + 10a0: 61 f5 brne .+88 ; 0x10fa * \note This is not applicable for non CONTROL type endpoints. */ static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE; static inline void Endpoint_ClearSETUP(void) { UEINTX &= ~(1 << RXSTPI); - 110e: 80 91 e8 00 lds r24, 0x00E8 - 1112: 87 7f andi r24, 0xF7 ; 247 - 1114: 80 93 e8 00 sts 0x00E8, r24 + 10a2: 80 91 e8 00 lds r24, 0x00E8 + 10a6: 87 7f andi r24, 0xF7 ; 247 + 10a8: 80 93 e8 00 sts 0x00E8, r24 static void USB_Device_GetConfiguration(void) { Endpoint_ClearSETUP(); Endpoint_Write_8(USB_Device_ConfigurationNumber); - 1118: 80 91 8a 02 lds r24, 0x028A + 10ac: 80 91 8a 02 lds r24, 0x028A * \param[in] Data Data to write into the the currently selected endpoint's FIFO buffer. */ static inline void Endpoint_Write_8(const uint8_t Data) ATTR_ALWAYS_INLINE; static inline void Endpoint_Write_8(const uint8_t Data) { UEDATX = Data; - 111c: 80 93 f1 00 sts 0x00F1, r24 + 10b0: 80 93 f1 00 sts 0x00F1, r24 */ static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE; static inline void Endpoint_ClearIN(void) { #if !defined(CONTROL_ONLY_DEVICE) UEINTX &= ~((1 << TXINI) | (1 << FIFOCON)); - 1120: 80 91 e8 00 lds r24, 0x00E8 - 1124: 8e 77 andi r24, 0x7E ; 126 - 1126: 80 93 e8 00 sts 0x00E8, r24 + 10b4: 80 91 e8 00 lds r24, 0x00E8 + 10b8: 8e 77 andi r24, 0x7E ; 126 + 10ba: 80 93 e8 00 sts 0x00E8, r24 Endpoint_ClearIN(); Endpoint_ClearStatusStage(); - 112a: 5b dd rcall .-1354 ; 0xbe2 - 112c: 1b c0 rjmp .+54 ; 0x1164 + 10be: 93 dd rcall .-1242 ; 0xbe6 + 10c0: 1c c0 rjmp .+56 ; 0x10fa if (bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE)) USB_Device_GetConfiguration(); break; case REQ_SetConfiguration: if (bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_DEVICE)) - 112e: 88 23 and r24, r24 - 1130: c9 f4 brne .+50 ; 0x1164 + 10c2: 88 23 and r24, r24 + 10c4: d1 f4 brne .+52 ; 0x10fa } static void USB_Device_SetConfiguration(void) { #if defined(FIXED_NUM_CONFIGURATIONS) if ((uint8_t)USB_ControlRequest.wValue > FIXED_NUM_CONFIGURATIONS) - 1132: 90 91 90 02 lds r25, 0x0290 - 1136: 92 30 cpi r25, 0x02 ; 2 - 1138: a8 f4 brcc .+42 ; 0x1164 + 10c6: 90 91 91 02 lds r25, 0x0291 + 10ca: 92 30 cpi r25, 0x02 ; 2 + 10cc: b0 f4 brcc .+44 ; 0x10fa * \note This is not applicable for non CONTROL type endpoints. */ static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE; static inline void Endpoint_ClearSETUP(void) { UEINTX &= ~(1 << RXSTPI); - 113a: 80 91 e8 00 lds r24, 0x00E8 - 113e: 87 7f andi r24, 0xF7 ; 247 - 1140: 80 93 e8 00 sts 0x00E8, r24 + 10ce: 80 91 e8 00 lds r24, 0x00E8 + 10d2: 87 7f andi r24, 0xF7 ; 247 + 10d4: 80 93 e8 00 sts 0x00E8, r24 #endif #endif Endpoint_ClearSETUP(); USB_Device_ConfigurationNumber = (uint8_t)USB_ControlRequest.wValue; - 1144: 90 93 8a 02 sts 0x028A, r25 + 10d8: 90 93 8a 02 sts 0x028A, r25 Endpoint_ClearStatusStage(); - 1148: 4c dd rcall .-1384 ; 0xbe2 + 10dc: 84 dd rcall .-1272 ; 0xbe6 if (USB_Device_ConfigurationNumber) - 114a: 80 91 8a 02 lds r24, 0x028A - 114e: 88 23 and r24, r24 - 1150: 21 f4 brne .+8 ; 0x115a + 10de: 80 91 8a 02 lds r24, 0x028A + 10e2: 88 23 and r24, r24 + 10e4: 21 f4 brne .+8 ; 0x10ee } static inline bool USB_Device_IsAddressSet(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT; static inline bool USB_Device_IsAddressSet(void) { return (UDADDR & (1 << ADDEN)); - 1152: 80 91 e3 00 lds r24, 0x00E3 + 10e6: 80 91 e3 00 lds r24, 0x00E3 USB_DeviceState = DEVICE_STATE_Configured; else USB_DeviceState = (USB_Device_IsAddressSet()) ? DEVICE_STATE_Configured : DEVICE_STATE_Powered; - 1156: 87 ff sbrs r24, 7 - 1158: 02 c0 rjmp .+4 ; 0x115e - 115a: 84 e0 ldi r24, 0x04 ; 4 - 115c: 01 c0 rjmp .+2 ; 0x1160 - 115e: 81 e0 ldi r24, 0x01 ; 1 - 1160: 8e bb out 0x1e, r24 ; 30 + 10ea: 87 ff sbrs r24, 7 + 10ec: 02 c0 rjmp .+4 ; 0x10f2 + 10ee: 84 e0 ldi r24, 0x04 ; 4 + 10f0: 01 c0 rjmp .+2 ; 0x10f4 + 10f2: 81 e0 ldi r24, 0x01 ; 1 + 10f4: 80 93 8e 02 sts 0x028E, r24 EVENT_USB_Device_ConfigurationChanged(); - 1162: 4f da rcall .-2914 ; 0x602 + 10f8: 84 da rcall .-2808 ; 0x602 * \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise. */ static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; static inline bool Endpoint_IsSETUPReceived(void) { return ((UEINTX & (1 << RXSTPI)) ? true : false); - 1164: 80 91 e8 00 lds r24, 0x00E8 + 10fa: 80 91 e8 00 lds r24, 0x00E8 default: break; } } if (Endpoint_IsSETUPReceived()) - 1168: 83 ff sbrs r24, 3 - 116a: 0a c0 rjmp .+20 ; 0x1180 + 10fe: 83 ff sbrs r24, 3 + 1100: 0a c0 rjmp .+20 ; 0x1116 * \note This is not applicable for non CONTROL type endpoints. */ static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE; static inline void Endpoint_ClearSETUP(void) { UEINTX &= ~(1 << RXSTPI); - 116c: 80 91 e8 00 lds r24, 0x00E8 - 1170: 87 7f andi r24, 0xF7 ; 247 - 1172: 80 93 e8 00 sts 0x00E8, r24 + 1102: 80 91 e8 00 lds r24, 0x00E8 + 1106: 87 7f andi r24, 0xF7 ; 247 + 1108: 80 93 e8 00 sts 0x00E8, r24 * \ingroup Group_EndpointPacketManagement_AVR8 */ static inline void Endpoint_StallTransaction(void) ATTR_ALWAYS_INLINE; static inline void Endpoint_StallTransaction(void) { UECONX |= (1 << STALLRQ); - 1176: 80 91 eb 00 lds r24, 0x00EB - 117a: 80 62 ori r24, 0x20 ; 32 - 117c: 80 93 eb 00 sts 0x00EB, r24 + 110c: 80 91 eb 00 lds r24, 0x00EB + 1110: 80 62 ori r24, 0x20 ; 32 + 1112: 80 93 eb 00 sts 0x00EB, r24 { Endpoint_ClearSETUP(); Endpoint_StallTransaction(); } } - 1180: ac 96 adiw r28, 0x2c ; 44 - 1182: 0f b6 in r0, 0x3f ; 63 - 1184: f8 94 cli - 1186: de bf out 0x3e, r29 ; 62 - 1188: 0f be out 0x3f, r0 ; 63 - 118a: cd bf out 0x3d, r28 ; 61 - 118c: cf 91 pop r28 - 118e: df 91 pop r29 - 1190: 1f 91 pop r17 - 1192: 08 95 ret - -00001194 : + 1116: ac 96 adiw r28, 0x2c ; 44 + 1118: 0f b6 in r0, 0x3f ; 63 + 111a: f8 94 cli + 111c: de bf out 0x3e, r29 ; 62 + 111e: 0f be out 0x3f, r0 ; 63 + 1120: cd bf out 0x3d, r28 ; 61 + 1122: cf 91 pop r28 + 1124: df 91 pop r29 + 1126: 1f 91 pop r17 + 1128: 08 95 ret + +0000112a : #include "Events.h" void USB_Event_Stub(void) { } - 1194: 08 95 ret + 112a: 08 95 ret -00001196 : +0000112c : #if defined(USB_CAN_BE_DEVICE) && !defined(DEVICE_STATE_AS_GPIOR) volatile uint8_t USB_DeviceState; #endif void USB_USBTask(void) { - 1196: 1f 93 push r17 + 112c: 1f 93 push r17 } #if defined(USB_CAN_BE_DEVICE) static void USB_DeviceTask(void) { if (USB_DeviceState == DEVICE_STATE_Unattached) - 1198: 8e b3 in r24, 0x1e ; 30 - 119a: 88 23 and r24, r24 - 119c: a9 f0 breq .+42 ; 0x11c8 + 112e: 80 91 8e 02 lds r24, 0x028E + 1132: 88 23 and r24, r24 + 1134: a9 f0 breq .+42 ; 0x1160 */ static inline uint8_t Endpoint_GetCurrentEndpoint(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; static inline uint8_t Endpoint_GetCurrentEndpoint(void) { #if !defined(CONTROL_ONLY_DEVICE) return ((UENUM & ENDPOINT_EPNUM_MASK) | Endpoint_GetEndpointDirection()); - 119e: 80 91 e9 00 lds r24, 0x00E9 - 11a2: 8f 70 andi r24, 0x0F ; 15 + 1136: 80 91 e9 00 lds r24, 0x00E9 + 113a: 8f 70 andi r24, 0x0F ; 15 * \return The currently selected endpoint's direction, as a \c ENDPOINT_DIR_* mask. */ static inline uint8_t Endpoint_GetEndpointDirection(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; static inline uint8_t Endpoint_GetEndpointDirection(void) { return (UECFG0X & (1 << EPDIR)) ? ENDPOINT_DIR_IN : ENDPOINT_DIR_OUT; - 11a4: 90 91 ec 00 lds r25, 0x00EC - 11a8: 90 ff sbrs r25, 0 - 11aa: 02 c0 rjmp .+4 ; 0x11b0 - 11ac: 10 e8 ldi r17, 0x80 ; 128 - 11ae: 01 c0 rjmp .+2 ; 0x11b2 - 11b0: 10 e0 ldi r17, 0x00 ; 0 + 113c: 90 91 ec 00 lds r25, 0x00EC + 1140: 90 ff sbrs r25, 0 + 1142: 02 c0 rjmp .+4 ; 0x1148 + 1144: 10 e8 ldi r17, 0x80 ; 128 + 1146: 01 c0 rjmp .+2 ; 0x114a + 1148: 10 e0 ldi r17, 0x00 ; 0 */ static inline uint8_t Endpoint_GetCurrentEndpoint(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; static inline uint8_t Endpoint_GetCurrentEndpoint(void) { #if !defined(CONTROL_ONLY_DEVICE) return ((UENUM & ENDPOINT_EPNUM_MASK) | Endpoint_GetEndpointDirection()); - 11b2: 18 2b or r17, r24 + 114a: 18 2b or r17, r24 */ static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE; static inline void Endpoint_SelectEndpoint(const uint8_t Address) { #if !defined(CONTROL_ONLY_DEVICE) UENUM = (Address & ENDPOINT_EPNUM_MASK); - 11b4: 10 92 e9 00 sts 0x00E9, r1 + 114c: 10 92 e9 00 sts 0x00E9, r1 * \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise. */ static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; static inline bool Endpoint_IsSETUPReceived(void) { return ((UEINTX & (1 << RXSTPI)) ? true : false); - 11b8: 80 91 e8 00 lds r24, 0x00E8 + 1150: 80 91 e8 00 lds r24, 0x00E8 uint8_t PrevEndpoint = Endpoint_GetCurrentEndpoint(); Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP); if (Endpoint_IsSETUPReceived()) - 11bc: 83 ff sbrs r24, 3 - 11be: 01 c0 rjmp .+2 ; 0x11c2 + 1154: 83 ff sbrs r24, 3 + 1156: 01 c0 rjmp .+2 ; 0x115a USB_Device_ProcessControlRequest(); - 11c0: 88 de rcall .-752 ; 0xed2 + 1158: 85 de rcall .-758 ; 0xe64 */ static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE; static inline void Endpoint_SelectEndpoint(const uint8_t Address) { #if !defined(CONTROL_ONLY_DEVICE) UENUM = (Address & ENDPOINT_EPNUM_MASK); - 11c2: 1f 70 andi r17, 0x0F ; 15 - 11c4: 10 93 e9 00 sts 0x00E9, r17 + 115a: 1f 70 andi r17, 0x0F ; 15 + 115c: 10 93 e9 00 sts 0x00E9, r17 #elif defined(USB_CAN_BE_HOST) USB_HostTask(); #elif defined(USB_CAN_BE_DEVICE) USB_DeviceTask(); #endif } - 11c8: 1f 91 pop r17 - 11ca: 08 95 ret + 1160: 1f 91 pop r17 + 1162: 08 95 ret -000011cc : +00001164 : #define __INCLUDE_FROM_CDC_DRIVER #define __INCLUDE_FROM_CDC_DEVICE_C #include "CDCClassDevice.h" void CDC_Device_ProcessControlRequest(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) { - 11cc: cf 93 push r28 - 11ce: df 93 push r29 - 11d0: ec 01 movw r28, r24 + 1164: cf 93 push r28 + 1166: df 93 push r29 + 1168: ec 01 movw r28, r24 * \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise. */ static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; static inline bool Endpoint_IsSETUPReceived(void) { return ((UEINTX & (1 << RXSTPI)) ? true : false); - 11d2: 80 91 e8 00 lds r24, 0x00E8 + 116a: 80 91 e8 00 lds r24, 0x00E8 if (!(Endpoint_IsSETUPReceived())) - 11d6: 83 ff sbrs r24, 3 - 11d8: a2 c0 rjmp .+324 ; 0x131e + 116e: 83 ff sbrs r24, 3 + 1170: a3 c0 rjmp .+326 ; 0x12b8 return; if (USB_ControlRequest.wIndex != CDCInterfaceInfo->Config.ControlInterfaceNumber) - 11da: 88 81 ld r24, Y - 11dc: 90 e0 ldi r25, 0x00 ; 0 - 11de: 20 91 92 02 lds r18, 0x0292 - 11e2: 30 91 93 02 lds r19, 0x0293 - 11e6: 28 17 cp r18, r24 - 11e8: 39 07 cpc r19, r25 - 11ea: 09 f0 breq .+2 ; 0x11ee - 11ec: 98 c0 rjmp .+304 ; 0x131e + 1172: 88 81 ld r24, Y + 1174: 90 e0 ldi r25, 0x00 ; 0 + 1176: 20 91 93 02 lds r18, 0x0293 + 117a: 30 91 94 02 lds r19, 0x0294 + 117e: 28 17 cp r18, r24 + 1180: 39 07 cpc r19, r25 + 1182: 09 f0 breq .+2 ; 0x1186 + 1184: 99 c0 rjmp .+306 ; 0x12b8 return; switch (USB_ControlRequest.bRequest) - 11ee: 80 91 8f 02 lds r24, 0x028F - 11f2: 81 32 cpi r24, 0x21 ; 33 - 11f4: 69 f0 breq .+26 ; 0x1210 - 11f6: 82 32 cpi r24, 0x22 ; 34 - 11f8: 20 f4 brcc .+8 ; 0x1202 - 11fa: 80 32 cpi r24, 0x20 ; 32 - 11fc: 09 f0 breq .+2 ; 0x1200 - 11fe: 8f c0 rjmp .+286 ; 0x131e - 1200: 3c c0 rjmp .+120 ; 0x127a - 1202: 82 32 cpi r24, 0x22 ; 34 - 1204: 09 f4 brne .+2 ; 0x1208 - 1206: 6a c0 rjmp .+212 ; 0x12dc - 1208: 83 32 cpi r24, 0x23 ; 35 - 120a: 09 f0 breq .+2 ; 0x120e - 120c: 88 c0 rjmp .+272 ; 0x131e - 120e: 79 c0 rjmp .+242 ; 0x1302 + 1186: 80 91 90 02 lds r24, 0x0290 + 118a: 81 32 cpi r24, 0x21 ; 33 + 118c: 69 f0 breq .+26 ; 0x11a8 + 118e: 82 32 cpi r24, 0x22 ; 34 + 1190: 20 f4 brcc .+8 ; 0x119a + 1192: 80 32 cpi r24, 0x20 ; 32 + 1194: 09 f0 breq .+2 ; 0x1198 + 1196: 90 c0 rjmp .+288 ; 0x12b8 + 1198: 3c c0 rjmp .+120 ; 0x1212 + 119a: 82 32 cpi r24, 0x22 ; 34 + 119c: 09 f4 brne .+2 ; 0x11a0 + 119e: 6b c0 rjmp .+214 ; 0x1276 + 11a0: 83 32 cpi r24, 0x23 ; 35 + 11a2: 09 f0 breq .+2 ; 0x11a6 + 11a4: 89 c0 rjmp .+274 ; 0x12b8 + 11a6: 7a c0 rjmp .+244 ; 0x129c { case CDC_REQ_GetLineEncoding: if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE)) - 1210: 80 91 8e 02 lds r24, 0x028E - 1214: 81 3a cpi r24, 0xA1 ; 161 - 1216: 09 f0 breq .+2 ; 0x121a - 1218: 82 c0 rjmp .+260 ; 0x131e + 11a8: 80 91 8f 02 lds r24, 0x028F + 11ac: 81 3a cpi r24, 0xA1 ; 161 + 11ae: 09 f0 breq .+2 ; 0x11b2 + 11b0: 83 c0 rjmp .+262 ; 0x12b8 * \note This is not applicable for non CONTROL type endpoints. */ static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE; static inline void Endpoint_ClearSETUP(void) { UEINTX &= ~(1 << RXSTPI); - 121a: 80 91 e8 00 lds r24, 0x00E8 - 121e: 87 7f andi r24, 0xF7 ; 247 - 1220: 80 93 e8 00 sts 0x00E8, r24 + 11b2: 80 91 e8 00 lds r24, 0x00E8 + 11b6: 87 7f andi r24, 0xF7 ; 247 + 11b8: 80 93 e8 00 sts 0x00E8, r24 * \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise. */ static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; static inline bool Endpoint_IsINReady(void) { return ((UEINTX & (1 << TXINI)) ? true : false); - 1224: 80 91 e8 00 lds r24, 0x00E8 + 11bc: 80 91 e8 00 lds r24, 0x00E8 { Endpoint_ClearSETUP(); while (!(Endpoint_IsINReady())); - 1228: 80 ff sbrs r24, 0 - 122a: fc cf rjmp .-8 ; 0x1224 + 11c0: 80 ff sbrs r24, 0 + 11c2: fc cf rjmp .-8 ; 0x11bc Endpoint_Write_32_LE(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS); - 122c: 8c 89 ldd r24, Y+20 ; 0x14 - 122e: 9d 89 ldd r25, Y+21 ; 0x15 - 1230: ae 89 ldd r26, Y+22 ; 0x16 - 1232: bf 89 ldd r27, Y+23 ; 0x17 + 11c4: 8c 89 ldd r24, Y+20 ; 0x14 + 11c6: 9d 89 ldd r25, Y+21 ; 0x15 + 11c8: ae 89 ldd r26, Y+22 ; 0x16 + 11ca: bf 89 ldd r27, Y+23 ; 0x17 * \param[in] Data Data to write to the currently selected endpoint's FIFO buffer. */ static inline void Endpoint_Write_32_LE(const uint32_t Data) ATTR_ALWAYS_INLINE; static inline void Endpoint_Write_32_LE(const uint32_t Data) { UEDATX = (Data & 0xFF); - 1234: 80 93 f1 00 sts 0x00F1, r24 + 11cc: 80 93 f1 00 sts 0x00F1, r24 UEDATX = (Data >> 8); - 1238: 29 2f mov r18, r25 - 123a: 3a 2f mov r19, r26 - 123c: 4b 2f mov r20, r27 - 123e: 55 27 eor r21, r21 - 1240: 20 93 f1 00 sts 0x00F1, r18 + 11d0: 29 2f mov r18, r25 + 11d2: 3a 2f mov r19, r26 + 11d4: 4b 2f mov r20, r27 + 11d6: 55 27 eor r21, r21 + 11d8: 20 93 f1 00 sts 0x00F1, r18 UEDATX = (Data >> 16); - 1244: 9d 01 movw r18, r26 - 1246: 44 27 eor r20, r20 - 1248: 55 27 eor r21, r21 - 124a: 20 93 f1 00 sts 0x00F1, r18 + 11dc: 9d 01 movw r18, r26 + 11de: 44 27 eor r20, r20 + 11e0: 55 27 eor r21, r21 + 11e2: 20 93 f1 00 sts 0x00F1, r18 UEDATX = (Data >> 24); - 124e: 8b 2f mov r24, r27 - 1250: 99 27 eor r25, r25 - 1252: aa 27 eor r26, r26 - 1254: bb 27 eor r27, r27 - 1256: 80 93 f1 00 sts 0x00F1, r24 + 11e6: 8b 2f mov r24, r27 + 11e8: 99 27 eor r25, r25 + 11ea: aa 27 eor r26, r26 + 11ec: bb 27 eor r27, r27 + 11ee: 80 93 f1 00 sts 0x00F1, r24 Endpoint_Write_8(CDCInterfaceInfo->State.LineEncoding.CharFormat); - 125a: 88 8d ldd r24, Y+24 ; 0x18 + 11f2: 88 8d ldd r24, Y+24 ; 0x18 * \param[in] Data Data to write into the the currently selected endpoint's FIFO buffer. */ static inline void Endpoint_Write_8(const uint8_t Data) ATTR_ALWAYS_INLINE; static inline void Endpoint_Write_8(const uint8_t Data) { UEDATX = Data; - 125c: 80 93 f1 00 sts 0x00F1, r24 + 11f4: 80 93 f1 00 sts 0x00F1, r24 Endpoint_Write_8(CDCInterfaceInfo->State.LineEncoding.ParityType); - 1260: 89 8d ldd r24, Y+25 ; 0x19 - 1262: 80 93 f1 00 sts 0x00F1, r24 + 11f8: 89 8d ldd r24, Y+25 ; 0x19 + 11fa: 80 93 f1 00 sts 0x00F1, r24 Endpoint_Write_8(CDCInterfaceInfo->State.LineEncoding.DataBits); - 1266: 8a 8d ldd r24, Y+26 ; 0x1a - 1268: 80 93 f1 00 sts 0x00F1, r24 + 11fe: 8a 8d ldd r24, Y+26 ; 0x1a + 1200: 80 93 f1 00 sts 0x00F1, r24 */ static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE; static inline void Endpoint_ClearIN(void) { #if !defined(CONTROL_ONLY_DEVICE) UEINTX &= ~((1 << TXINI) | (1 << FIFOCON)); - 126c: 80 91 e8 00 lds r24, 0x00E8 - 1270: 8e 77 andi r24, 0x7E ; 126 - 1272: 80 93 e8 00 sts 0x00E8, r24 + 1204: 80 91 e8 00 lds r24, 0x00E8 + 1208: 8e 77 andi r24, 0x7E ; 126 + 120a: 80 93 e8 00 sts 0x00E8, r24 Endpoint_ClearIN(); Endpoint_ClearStatusStage(); - 1276: b5 dc rcall .-1686 ; 0xbe2 - 1278: 52 c0 rjmp .+164 ; 0x131e + 120e: eb dc rcall .-1578 ; 0xbe6 + 1210: 53 c0 rjmp .+166 ; 0x12b8 } break; case CDC_REQ_SetLineEncoding: if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE)) - 127a: 80 91 8e 02 lds r24, 0x028E - 127e: 81 32 cpi r24, 0x21 ; 33 - 1280: 09 f0 breq .+2 ; 0x1284 - 1282: 4d c0 rjmp .+154 ; 0x131e + 1212: 80 91 8f 02 lds r24, 0x028F + 1216: 81 32 cpi r24, 0x21 ; 33 + 1218: 09 f0 breq .+2 ; 0x121c + 121a: 4e c0 rjmp .+156 ; 0x12b8 * \note This is not applicable for non CONTROL type endpoints. */ static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE; static inline void Endpoint_ClearSETUP(void) { UEINTX &= ~(1 << RXSTPI); - 1284: 80 91 e8 00 lds r24, 0x00E8 - 1288: 87 7f andi r24, 0xF7 ; 247 - 128a: 80 93 e8 00 sts 0x00E8, r24 + 121c: 80 91 e8 00 lds r24, 0x00E8 + 1220: 87 7f andi r24, 0xF7 ; 247 + 1222: 80 93 e8 00 sts 0x00E8, r24 { Endpoint_ClearSETUP(); while (!(Endpoint_IsOUTReceived())) - 128e: 04 c0 rjmp .+8 ; 0x1298 + 1226: 05 c0 rjmp .+10 ; 0x1232 { if (USB_DeviceState == DEVICE_STATE_Unattached) - 1290: 8e b3 in r24, 0x1e ; 30 - 1292: 88 23 and r24, r24 - 1294: 09 f4 brne .+2 ; 0x1298 - 1296: 43 c0 rjmp .+134 ; 0x131e + 1228: 80 91 8e 02 lds r24, 0x028E + 122c: 88 23 and r24, r24 + 122e: 09 f4 brne .+2 ; 0x1232 + 1230: 43 c0 rjmp .+134 ; 0x12b8 * \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise. */ static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; static inline bool Endpoint_IsOUTReceived(void) { return ((UEINTX & (1 << RXOUTI)) ? true : false); - 1298: 80 91 e8 00 lds r24, 0x00E8 + 1232: 80 91 e8 00 lds r24, 0x00E8 case CDC_REQ_SetLineEncoding: if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE)) { Endpoint_ClearSETUP(); while (!(Endpoint_IsOUTReceived())) - 129c: 82 ff sbrs r24, 2 - 129e: f8 cf rjmp .-16 ; 0x1290 + 1236: 82 ff sbrs r24, 2 + 1238: f7 cf rjmp .-18 ; 0x1228 { uint32_t Value; uint8_t Bytes[4]; } Data; Data.Bytes[0] = UEDATX; - 12a0: 30 91 f1 00 lds r19, 0x00F1 + 123a: 30 91 f1 00 lds r19, 0x00F1 Data.Bytes[1] = UEDATX; - 12a4: 20 91 f1 00 lds r18, 0x00F1 + 123e: 20 91 f1 00 lds r18, 0x00F1 Data.Bytes[2] = UEDATX; - 12a8: 90 91 f1 00 lds r25, 0x00F1 + 1242: 90 91 f1 00 lds r25, 0x00F1 Data.Bytes[3] = UEDATX; - 12ac: 80 91 f1 00 lds r24, 0x00F1 + 1246: 80 91 f1 00 lds r24, 0x00F1 { if (USB_DeviceState == DEVICE_STATE_Unattached) return; } CDCInterfaceInfo->State.LineEncoding.BaudRateBPS = Endpoint_Read_32_LE(); - 12b0: 3c 8b std Y+20, r19 ; 0x14 - 12b2: 2d 8b std Y+21, r18 ; 0x15 - 12b4: 9e 8b std Y+22, r25 ; 0x16 - 12b6: 8f 8b std Y+23, r24 ; 0x17 + 124a: 3c 8b std Y+20, r19 ; 0x14 + 124c: 2d 8b std Y+21, r18 ; 0x15 + 124e: 9e 8b std Y+22, r25 ; 0x16 + 1250: 8f 8b std Y+23, r24 ; 0x17 * \return Next byte in the currently selected endpoint's FIFO buffer. */ static inline uint8_t Endpoint_Read_8(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; static inline uint8_t Endpoint_Read_8(void) { return UEDATX; - 12b8: 80 91 f1 00 lds r24, 0x00F1 + 1252: 80 91 f1 00 lds r24, 0x00F1 CDCInterfaceInfo->State.LineEncoding.CharFormat = Endpoint_Read_8(); - 12bc: 88 8f std Y+24, r24 ; 0x18 - 12be: 80 91 f1 00 lds r24, 0x00F1 + 1256: 88 8f std Y+24, r24 ; 0x18 + 1258: 80 91 f1 00 lds r24, 0x00F1 CDCInterfaceInfo->State.LineEncoding.ParityType = Endpoint_Read_8(); - 12c2: 89 8f std Y+25, r24 ; 0x19 - 12c4: 80 91 f1 00 lds r24, 0x00F1 + 125c: 89 8f std Y+25, r24 ; 0x19 + 125e: 80 91 f1 00 lds r24, 0x00F1 CDCInterfaceInfo->State.LineEncoding.DataBits = Endpoint_Read_8(); - 12c8: 8a 8f std Y+26, r24 ; 0x1a + 1262: 8a 8f std Y+26, r24 ; 0x1a */ static inline void Endpoint_ClearOUT(void) ATTR_ALWAYS_INLINE; static inline void Endpoint_ClearOUT(void) { #if !defined(CONTROL_ONLY_DEVICE) UEINTX &= ~((1 << RXOUTI) | (1 << FIFOCON)); - 12ca: 80 91 e8 00 lds r24, 0x00E8 - 12ce: 8b 77 andi r24, 0x7B ; 123 - 12d0: 80 93 e8 00 sts 0x00E8, r24 + 1264: 80 91 e8 00 lds r24, 0x00E8 + 1268: 8b 77 andi r24, 0x7B ; 123 + 126a: 80 93 e8 00 sts 0x00E8, r24 Endpoint_ClearOUT(); Endpoint_ClearStatusStage(); - 12d4: 86 dc rcall .-1780 ; 0xbe2 + 126e: bb dc rcall .-1674 ; 0xbe6 EVENT_CDC_Device_LineEncodingChanged(CDCInterfaceInfo); - 12d6: ce 01 movw r24, r28 - 12d8: c4 d9 rcall .-3192 ; 0x662 - 12da: 21 c0 rjmp .+66 ; 0x131e + 1270: ce 01 movw r24, r28 + 1272: f7 d9 rcall .-3090 ; 0x662 + 1274: 21 c0 rjmp .+66 ; 0x12b8 } break; case CDC_REQ_SetControlLineState: if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE)) - 12dc: 80 91 8e 02 lds r24, 0x028E - 12e0: 81 32 cpi r24, 0x21 ; 33 - 12e2: e9 f4 brne .+58 ; 0x131e + 1276: 80 91 8f 02 lds r24, 0x028F + 127a: 81 32 cpi r24, 0x21 ; 33 + 127c: e9 f4 brne .+58 ; 0x12b8 * \note This is not applicable for non CONTROL type endpoints. */ static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE; static inline void Endpoint_ClearSETUP(void) { UEINTX &= ~(1 << RXSTPI); - 12e4: 80 91 e8 00 lds r24, 0x00E8 - 12e8: 87 7f andi r24, 0xF7 ; 247 - 12ea: 80 93 e8 00 sts 0x00E8, r24 + 127e: 80 91 e8 00 lds r24, 0x00E8 + 1282: 87 7f andi r24, 0xF7 ; 247 + 1284: 80 93 e8 00 sts 0x00E8, r24 { Endpoint_ClearSETUP(); Endpoint_ClearStatusStage(); - 12ee: 79 dc rcall .-1806 ; 0xbe2 + 1288: ae dc rcall .-1700 ; 0xbe6 CDCInterfaceInfo->State.ControlLineStates.HostToDevice = USB_ControlRequest.wValue; - 12f0: 80 91 90 02 lds r24, 0x0290 - 12f4: 90 91 91 02 lds r25, 0x0291 - 12f8: 99 8b std Y+17, r25 ; 0x11 - 12fa: 88 8b std Y+16, r24 ; 0x10 + 128a: 80 91 91 02 lds r24, 0x0291 + 128e: 90 91 92 02 lds r25, 0x0292 + 1292: 99 8b std Y+17, r25 ; 0x11 + 1294: 88 8b std Y+16, r24 ; 0x10 EVENT_CDC_Device_ControLineStateChanged(CDCInterfaceInfo); - 12fc: ce 01 movw r24, r28 - 12fe: d4 d0 rcall .+424 ; 0x14a8 - 1300: 0e c0 rjmp .+28 ; 0x131e + 1296: ce 01 movw r24, r28 + 1298: d8 d0 rcall .+432 ; 0x144a + 129a: 0e c0 rjmp .+28 ; 0x12b8 } break; case CDC_REQ_SendBreak: if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE)) - 1302: 80 91 8e 02 lds r24, 0x028E - 1306: 81 32 cpi r24, 0x21 ; 33 - 1308: 51 f4 brne .+20 ; 0x131e - 130a: 80 91 e8 00 lds r24, 0x00E8 - 130e: 87 7f andi r24, 0xF7 ; 247 - 1310: 80 93 e8 00 sts 0x00E8, r24 + 129c: 80 91 8f 02 lds r24, 0x028F + 12a0: 81 32 cpi r24, 0x21 ; 33 + 12a2: 51 f4 brne .+20 ; 0x12b8 + 12a4: 80 91 e8 00 lds r24, 0x00E8 + 12a8: 87 7f andi r24, 0xF7 ; 247 + 12aa: 80 93 e8 00 sts 0x00E8, r24 { Endpoint_ClearSETUP(); Endpoint_ClearStatusStage(); - 1314: 66 dc rcall .-1844 ; 0xbe2 + 12ae: 9b dc rcall .-1738 ; 0xbe6 EVENT_CDC_Device_BreakSent(CDCInterfaceInfo, (uint8_t)USB_ControlRequest.wValue); - 1316: ce 01 movw r24, r28 - 1318: 60 91 90 02 lds r22, 0x0290 - 131c: c5 d0 rcall .+394 ; 0x14a8 + 12b0: ce 01 movw r24, r28 + 12b2: 60 91 91 02 lds r22, 0x0291 + 12b6: c9 d0 rcall .+402 ; 0x144a } break; } } - 131e: df 91 pop r29 - 1320: cf 91 pop r28 - 1322: 08 95 ret + 12b8: df 91 pop r29 + 12ba: cf 91 pop r28 + 12bc: 08 95 ret -00001324 : +000012be : bool CDC_Device_ConfigureEndpoints(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) { - 1324: cf 93 push r28 - 1326: df 93 push r29 - 1328: ec 01 movw r28, r24 + 12be: cf 93 push r28 + 12c0: df 93 push r29 + 12c2: ec 01 movw r28, r24 memset(&CDCInterfaceInfo->State, 0x00, sizeof(CDCInterfaceInfo->State)); - 132a: 40 96 adiw r24, 0x10 ; 16 - 132c: fc 01 movw r30, r24 - 132e: 8b e0 ldi r24, 0x0B ; 11 - 1330: df 01 movw r26, r30 - 1332: 1d 92 st X+, r1 - 1334: 8a 95 dec r24 - 1336: e9 f7 brne .-6 ; 0x1332 + 12c4: 40 96 adiw r24, 0x10 ; 16 + 12c6: fc 01 movw r30, r24 + 12c8: 8b e0 ldi r24, 0x0B ; 11 + 12ca: df 01 movw r26, r30 + 12cc: 1d 92 st X+, r1 + 12ce: 8a 95 dec r24 + 12d0: e9 f7 brne .-6 ; 0x12cc CDCInterfaceInfo->Config.DataINEndpoint.Type = EP_TYPE_BULK; - 1338: 82 e0 ldi r24, 0x02 ; 2 - 133a: 8c 83 std Y+4, r24 ; 0x04 + 12d2: 82 e0 ldi r24, 0x02 ; 2 + 12d4: 8c 83 std Y+4, r24 ; 0x04 CDCInterfaceInfo->Config.DataOUTEndpoint.Type = EP_TYPE_BULK; - 133c: 89 87 std Y+9, r24 ; 0x09 + 12d6: 89 87 std Y+9, r24 ; 0x09 CDCInterfaceInfo->Config.NotificationEndpoint.Type = EP_TYPE_INTERRUPT; - 133e: 83 e0 ldi r24, 0x03 ; 3 - 1340: 8e 87 std Y+14, r24 ; 0x0e + 12d8: 83 e0 ldi r24, 0x03 ; 3 + 12da: 8e 87 std Y+14, r24 ; 0x0e if (!(Endpoint_ConfigureEndpointTable(&CDCInterfaceInfo->Config.DataINEndpoint, 1))) - 1342: ce 01 movw r24, r28 - 1344: 01 96 adiw r24, 0x01 ; 1 - 1346: 61 e0 ldi r22, 0x01 ; 1 - 1348: 08 dc rcall .-2032 ; 0xb5a - 134a: 88 23 and r24, r24 - 134c: 59 f0 breq .+22 ; 0x1364 + 12dc: ce 01 movw r24, r28 + 12de: 01 96 adiw r24, 0x01 ; 1 + 12e0: 61 e0 ldi r22, 0x01 ; 1 + 12e2: 3d dc rcall .-1926 ; 0xb5e + 12e4: 88 23 and r24, r24 + 12e6: 59 f0 breq .+22 ; 0x12fe return false; if (!(Endpoint_ConfigureEndpointTable(&CDCInterfaceInfo->Config.DataOUTEndpoint, 1))) - 134e: ce 01 movw r24, r28 - 1350: 06 96 adiw r24, 0x06 ; 6 - 1352: 61 e0 ldi r22, 0x01 ; 1 - 1354: 02 dc rcall .-2044 ; 0xb5a - 1356: 88 23 and r24, r24 - 1358: 29 f0 breq .+10 ; 0x1364 + 12e8: ce 01 movw r24, r28 + 12ea: 06 96 adiw r24, 0x06 ; 6 + 12ec: 61 e0 ldi r22, 0x01 ; 1 + 12ee: 37 dc rcall .-1938 ; 0xb5e + 12f0: 88 23 and r24, r24 + 12f2: 29 f0 breq .+10 ; 0x12fe return false; if (!(Endpoint_ConfigureEndpointTable(&CDCInterfaceInfo->Config.NotificationEndpoint, 1))) - 135a: ce 01 movw r24, r28 - 135c: 0b 96 adiw r24, 0x0b ; 11 - 135e: 61 e0 ldi r22, 0x01 ; 1 - 1360: fc db rcall .-2056 ; 0xb5a - 1362: 01 c0 rjmp .+2 ; 0x1366 + 12f4: ce 01 movw r24, r28 + 12f6: 0b 96 adiw r24, 0x0b ; 11 + 12f8: 61 e0 ldi r22, 0x01 ; 1 + 12fa: 31 dc rcall .-1950 ; 0xb5e + 12fc: 01 c0 rjmp .+2 ; 0x1300 if (!(Endpoint_ConfigureEndpointTable(&CDCInterfaceInfo->Config.DataINEndpoint, 1))) return false; if (!(Endpoint_ConfigureEndpointTable(&CDCInterfaceInfo->Config.DataOUTEndpoint, 1))) return false; - 1364: 80 e0 ldi r24, 0x00 ; 0 + 12fe: 80 e0 ldi r24, 0x00 ; 0 if (!(Endpoint_ConfigureEndpointTable(&CDCInterfaceInfo->Config.NotificationEndpoint, 1))) return false; return true; } - 1366: df 91 pop r29 - 1368: cf 91 pop r28 - 136a: 08 95 ret + 1300: df 91 pop r29 + 1302: cf 91 pop r28 + 1304: 08 95 ret -0000136c : +00001306 : return Endpoint_Write_Stream_LE(Buffer, Length, NULL); } uint8_t CDC_Device_SendByte(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, const uint8_t Data) { - 136c: df 93 push r29 - 136e: cf 93 push r28 - 1370: 0f 92 push r0 - 1372: cd b7 in r28, 0x3d ; 61 - 1374: de b7 in r29, 0x3e ; 62 - 1376: fc 01 movw r30, r24 + 1306: df 93 push r29 + 1308: cf 93 push r28 + 130a: 0f 92 push r0 + 130c: cd b7 in r28, 0x3d ; 61 + 130e: de b7 in r29, 0x3e ; 62 + 1310: fc 01 movw r30, r24 if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS)) - 1378: 8e b3 in r24, 0x1e ; 30 - 137a: 84 30 cpi r24, 0x04 ; 4 - 137c: f9 f4 brne .+62 ; 0x13bc - 137e: 24 89 ldd r18, Z+20 ; 0x14 - 1380: 35 89 ldd r19, Z+21 ; 0x15 - 1382: 46 89 ldd r20, Z+22 ; 0x16 - 1384: 57 89 ldd r21, Z+23 ; 0x17 - 1386: 21 15 cp r18, r1 - 1388: 31 05 cpc r19, r1 - 138a: 41 05 cpc r20, r1 - 138c: 51 05 cpc r21, r1 - 138e: b1 f0 breq .+44 ; 0x13bc + 1312: 80 91 8e 02 lds r24, 0x028E + 1316: 84 30 cpi r24, 0x04 ; 4 + 1318: f9 f4 brne .+62 ; 0x1358 + 131a: 24 89 ldd r18, Z+20 ; 0x14 + 131c: 35 89 ldd r19, Z+21 ; 0x15 + 131e: 46 89 ldd r20, Z+22 ; 0x16 + 1320: 57 89 ldd r21, Z+23 ; 0x17 + 1322: 21 15 cp r18, r1 + 1324: 31 05 cpc r19, r1 + 1326: 41 05 cpc r20, r1 + 1328: 51 05 cpc r21, r1 + 132a: b1 f0 breq .+44 ; 0x1358 */ static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE; static inline void Endpoint_SelectEndpoint(const uint8_t Address) { #if !defined(CONTROL_ONLY_DEVICE) UENUM = (Address & ENDPOINT_EPNUM_MASK); - 1390: 81 81 ldd r24, Z+1 ; 0x01 - 1392: 8f 70 andi r24, 0x0F ; 15 - 1394: 80 93 e9 00 sts 0x00E9, r24 + 132c: 81 81 ldd r24, Z+1 ; 0x01 + 132e: 8f 70 andi r24, 0x0F ; 15 + 1330: 80 93 e9 00 sts 0x00E9, r24 * on its direction. */ static inline bool Endpoint_IsReadWriteAllowed(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; static inline bool Endpoint_IsReadWriteAllowed(void) { return ((UEINTX & (1 << RWAL)) ? true : false); - 1398: 80 91 e8 00 lds r24, 0x00E8 + 1334: 80 91 e8 00 lds r24, 0x00E8 return ENDPOINT_RWSTREAM_DeviceDisconnected; Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataINEndpoint.Address); if (!(Endpoint_IsReadWriteAllowed())) - 139c: 85 fd sbrc r24, 5 - 139e: 0a c0 rjmp .+20 ; 0x13b4 + 1338: 85 fd sbrc r24, 5 + 133a: 0a c0 rjmp .+20 ; 0x1350 */ static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE; static inline void Endpoint_ClearIN(void) { #if !defined(CONTROL_ONLY_DEVICE) UEINTX &= ~((1 << TXINI) | (1 << FIFOCON)); - 13a0: 80 91 e8 00 lds r24, 0x00E8 - 13a4: 8e 77 andi r24, 0x7E ; 126 - 13a6: 80 93 e8 00 sts 0x00E8, r24 + 133c: 80 91 e8 00 lds r24, 0x00E8 + 1340: 8e 77 andi r24, 0x7E ; 126 + 1342: 80 93 e8 00 sts 0x00E8, r24 { Endpoint_ClearIN(); uint8_t ErrorCode; if ((ErrorCode = Endpoint_WaitUntilReady()) != ENDPOINT_READYWAIT_NoError) - 13aa: 69 83 std Y+1, r22 ; 0x01 - 13ac: 39 dc rcall .-1934 ; 0xc20 - 13ae: 69 81 ldd r22, Y+1 ; 0x01 - 13b0: 88 23 and r24, r24 - 13b2: 29 f4 brne .+10 ; 0x13be + 1346: 69 83 std Y+1, r22 ; 0x01 + 1348: 6f dc rcall .-1826 ; 0xc28 + 134a: 69 81 ldd r22, Y+1 ; 0x01 + 134c: 88 23 and r24, r24 + 134e: 29 f4 brne .+10 ; 0x135a * \param[in] Data Data to write into the the currently selected endpoint's FIFO buffer. */ static inline void Endpoint_Write_8(const uint8_t Data) ATTR_ALWAYS_INLINE; static inline void Endpoint_Write_8(const uint8_t Data) { UEDATX = Data; - 13b4: 60 93 f1 00 sts 0x00F1, r22 + 1350: 60 93 f1 00 sts 0x00F1, r22 return ErrorCode; } Endpoint_Write_8(Data); return ENDPOINT_READYWAIT_NoError; - 13b8: 80 e0 ldi r24, 0x00 ; 0 - 13ba: 01 c0 rjmp .+2 ; 0x13be + 1354: 80 e0 ldi r24, 0x00 ; 0 + 1356: 01 c0 rjmp .+2 ; 0x135a uint8_t CDC_Device_SendByte(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, const uint8_t Data) { if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS)) return ENDPOINT_RWSTREAM_DeviceDisconnected; - 13bc: 82 e0 ldi r24, 0x02 ; 2 + 1358: 82 e0 ldi r24, 0x02 ; 2 return ErrorCode; } Endpoint_Write_8(Data); return ENDPOINT_READYWAIT_NoError; } - 13be: 0f 90 pop r0 - 13c0: cf 91 pop r28 - 13c2: df 91 pop r29 - 13c4: 08 95 ret + 135a: 0f 90 pop r0 + 135c: cf 91 pop r28 + 135e: df 91 pop r29 + 1360: 08 95 ret -000013c6 : +00001362 : uint8_t CDC_Device_Flush(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) { - 13c6: fc 01 movw r30, r24 + 1362: fc 01 movw r30, r24 if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS)) - 13c8: 8e b3 in r24, 0x1e ; 30 - 13ca: 84 30 cpi r24, 0x04 ; 4 - 13cc: 19 f5 brne .+70 ; 0x1414 - 13ce: 24 89 ldd r18, Z+20 ; 0x14 - 13d0: 35 89 ldd r19, Z+21 ; 0x15 - 13d2: 46 89 ldd r20, Z+22 ; 0x16 - 13d4: 57 89 ldd r21, Z+23 ; 0x17 - 13d6: 21 15 cp r18, r1 - 13d8: 31 05 cpc r19, r1 - 13da: 41 05 cpc r20, r1 - 13dc: 51 05 cpc r21, r1 - 13de: d1 f0 breq .+52 ; 0x1414 + 1364: 80 91 8e 02 lds r24, 0x028E + 1368: 84 30 cpi r24, 0x04 ; 4 + 136a: 19 f5 brne .+70 ; 0x13b2 + 136c: 24 89 ldd r18, Z+20 ; 0x14 + 136e: 35 89 ldd r19, Z+21 ; 0x15 + 1370: 46 89 ldd r20, Z+22 ; 0x16 + 1372: 57 89 ldd r21, Z+23 ; 0x17 + 1374: 21 15 cp r18, r1 + 1376: 31 05 cpc r19, r1 + 1378: 41 05 cpc r20, r1 + 137a: 51 05 cpc r21, r1 + 137c: d1 f0 breq .+52 ; 0x13b2 */ static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE; static inline void Endpoint_SelectEndpoint(const uint8_t Address) { #if !defined(CONTROL_ONLY_DEVICE) UENUM = (Address & ENDPOINT_EPNUM_MASK); - 13e0: 81 81 ldd r24, Z+1 ; 0x01 - 13e2: 8f 70 andi r24, 0x0F ; 15 - 13e4: 80 93 e9 00 sts 0x00E9, r24 + 137e: 81 81 ldd r24, Z+1 ; 0x01 + 1380: 8f 70 andi r24, 0x0F ; 15 + 1382: 80 93 e9 00 sts 0x00E9, r24 #if (defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)) return UEBCX; #elif defined(USB_SERIES_4_AVR) return (((uint16_t)UEBCHX << 8) | UEBCLX); #elif defined(USB_SERIES_2_AVR) return UEBCLX; - 13e8: 80 91 f2 00 lds r24, 0x00F2 + 1386: 80 91 f2 00 lds r24, 0x00F2 uint8_t ErrorCode; Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataINEndpoint.Address); if (!(Endpoint_BytesInEndpoint())) - 13ec: 88 23 and r24, r24 - 13ee: a1 f0 breq .+40 ; 0x1418 + 138a: 88 23 and r24, r24 + 138c: a1 f0 breq .+40 ; 0x13b6 * on its direction. */ static inline bool Endpoint_IsReadWriteAllowed(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; static inline bool Endpoint_IsReadWriteAllowed(void) { return ((UEINTX & (1 << RWAL)) ? true : false); - 13f0: 90 91 e8 00 lds r25, 0x00E8 + 138e: 90 91 e8 00 lds r25, 0x00E8 */ static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE; static inline void Endpoint_ClearIN(void) { #if !defined(CONTROL_ONLY_DEVICE) UEINTX &= ~((1 << TXINI) | (1 << FIFOCON)); - 13f4: 80 91 e8 00 lds r24, 0x00E8 - 13f8: 8e 77 andi r24, 0x7E ; 126 - 13fa: 80 93 e8 00 sts 0x00E8, r24 + 1392: 80 91 e8 00 lds r24, 0x00E8 + 1396: 8e 77 andi r24, 0x7E ; 126 + 1398: 80 93 e8 00 sts 0x00E8, r24 bool BankFull = !(Endpoint_IsReadWriteAllowed()); Endpoint_ClearIN(); if (BankFull) - 13fe: 95 fd sbrc r25, 5 - 1400: 0d c0 rjmp .+26 ; 0x141c + 139c: 95 fd sbrc r25, 5 + 139e: 0d c0 rjmp .+26 ; 0x13ba { if ((ErrorCode = Endpoint_WaitUntilReady()) != ENDPOINT_READYWAIT_NoError) - 1402: 0e dc rcall .-2020 ; 0xc20 - 1404: 88 23 and r24, r24 - 1406: 59 f4 brne .+22 ; 0x141e - 1408: 90 91 e8 00 lds r25, 0x00E8 - 140c: 9e 77 andi r25, 0x7E ; 126 - 140e: 90 93 e8 00 sts 0x00E8, r25 - 1412: 08 95 ret + 13a0: 43 dc rcall .-1914 ; 0xc28 + 13a2: 88 23 and r24, r24 + 13a4: 59 f4 brne .+22 ; 0x13bc + 13a6: 90 91 e8 00 lds r25, 0x00E8 + 13aa: 9e 77 andi r25, 0x7E ; 126 + 13ac: 90 93 e8 00 sts 0x00E8, r25 + 13b0: 08 95 ret } uint8_t CDC_Device_Flush(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) { if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS)) return ENDPOINT_RWSTREAM_DeviceDisconnected; - 1414: 82 e0 ldi r24, 0x02 ; 2 - 1416: 08 95 ret + 13b2: 82 e0 ldi r24, 0x02 ; 2 + 13b4: 08 95 ret uint8_t ErrorCode; Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataINEndpoint.Address); if (!(Endpoint_BytesInEndpoint())) return ENDPOINT_READYWAIT_NoError; - 1418: 80 e0 ldi r24, 0x00 ; 0 - 141a: 08 95 ret + 13b6: 80 e0 ldi r24, 0x00 ; 0 + 13b8: 08 95 ret return ErrorCode; Endpoint_ClearIN(); } return ENDPOINT_READYWAIT_NoError; - 141c: 80 e0 ldi r24, 0x00 ; 0 + 13ba: 80 e0 ldi r24, 0x00 ; 0 } - 141e: 08 95 ret + 13bc: 08 95 ret -00001420 : +000013be : return true; } void CDC_Device_USBTask(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) { if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS)) - 1420: 2e b3 in r18, 0x1e ; 30 - 1422: 24 30 cpi r18, 0x04 ; 4 - 1424: 99 f4 brne .+38 ; 0x144c - 1426: fc 01 movw r30, r24 - 1428: 24 89 ldd r18, Z+20 ; 0x14 - 142a: 35 89 ldd r19, Z+21 ; 0x15 - 142c: 46 89 ldd r20, Z+22 ; 0x16 - 142e: 57 89 ldd r21, Z+23 ; 0x17 - 1430: 21 15 cp r18, r1 - 1432: 31 05 cpc r19, r1 - 1434: 41 05 cpc r20, r1 - 1436: 51 05 cpc r21, r1 - 1438: 49 f0 breq .+18 ; 0x144c + 13be: 20 91 8e 02 lds r18, 0x028E + 13c2: 24 30 cpi r18, 0x04 ; 4 + 13c4: 99 f4 brne .+38 ; 0x13ec + 13c6: fc 01 movw r30, r24 + 13c8: 24 89 ldd r18, Z+20 ; 0x14 + 13ca: 35 89 ldd r19, Z+21 ; 0x15 + 13cc: 46 89 ldd r20, Z+22 ; 0x16 + 13ce: 57 89 ldd r21, Z+23 ; 0x17 + 13d0: 21 15 cp r18, r1 + 13d2: 31 05 cpc r19, r1 + 13d4: 41 05 cpc r20, r1 + 13d6: 51 05 cpc r21, r1 + 13d8: 49 f0 breq .+18 ; 0x13ec */ static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE; static inline void Endpoint_SelectEndpoint(const uint8_t Address) { #if !defined(CONTROL_ONLY_DEVICE) UENUM = (Address & ENDPOINT_EPNUM_MASK); - 143a: 21 81 ldd r18, Z+1 ; 0x01 - 143c: 2f 70 andi r18, 0x0F ; 15 - 143e: 20 93 e9 00 sts 0x00E9, r18 + 13da: 21 81 ldd r18, Z+1 ; 0x01 + 13dc: 2f 70 andi r18, 0x0F ; 15 + 13de: 20 93 e9 00 sts 0x00E9, r18 * \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise. */ static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; static inline bool Endpoint_IsINReady(void) { return ((UEINTX & (1 << TXINI)) ? true : false); - 1442: 20 91 e8 00 lds r18, 0x00E8 + 13e2: 20 91 e8 00 lds r18, 0x00E8 return; #if !defined(NO_CLASS_DRIVER_AUTOFLUSH) Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataINEndpoint.Address); if (Endpoint_IsINReady()) - 1446: 20 ff sbrs r18, 0 - 1448: 01 c0 rjmp .+2 ; 0x144c + 13e6: 20 ff sbrs r18, 0 + 13e8: 01 c0 rjmp .+2 ; 0x13ec CDC_Device_Flush(CDCInterfaceInfo); - 144a: bd cf rjmp .-134 ; 0x13c6 - 144c: 08 95 ret + 13ea: bb cf rjmp .-138 ; 0x1362 + 13ec: 08 95 ret -0000144e : +000013ee : return 0; } } int16_t CDC_Device_ReceiveByte(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) { - 144e: fc 01 movw r30, r24 + 13ee: fc 01 movw r30, r24 if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS)) - 1450: 8e b3 in r24, 0x1e ; 30 - 1452: 84 30 cpi r24, 0x04 ; 4 - 1454: 29 f5 brne .+74 ; 0x14a0 - 1456: 24 89 ldd r18, Z+20 ; 0x14 - 1458: 35 89 ldd r19, Z+21 ; 0x15 - 145a: 46 89 ldd r20, Z+22 ; 0x16 - 145c: 57 89 ldd r21, Z+23 ; 0x17 - 145e: 21 15 cp r18, r1 - 1460: 31 05 cpc r19, r1 - 1462: 41 05 cpc r20, r1 - 1464: 51 05 cpc r21, r1 - 1466: e1 f0 breq .+56 ; 0x14a0 + 13f0: 80 91 8e 02 lds r24, 0x028E + 13f4: 84 30 cpi r24, 0x04 ; 4 + 13f6: 29 f5 brne .+74 ; 0x1442 + 13f8: 24 89 ldd r18, Z+20 ; 0x14 + 13fa: 35 89 ldd r19, Z+21 ; 0x15 + 13fc: 46 89 ldd r20, Z+22 ; 0x16 + 13fe: 57 89 ldd r21, Z+23 ; 0x17 + 1400: 21 15 cp r18, r1 + 1402: 31 05 cpc r19, r1 + 1404: 41 05 cpc r20, r1 + 1406: 51 05 cpc r21, r1 + 1408: e1 f0 breq .+56 ; 0x1442 */ static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE; static inline void Endpoint_SelectEndpoint(const uint8_t Address) { #if !defined(CONTROL_ONLY_DEVICE) UENUM = (Address & ENDPOINT_EPNUM_MASK); - 1468: 86 81 ldd r24, Z+6 ; 0x06 - 146a: 8f 70 andi r24, 0x0F ; 15 - 146c: 80 93 e9 00 sts 0x00E9, r24 + 140a: 86 81 ldd r24, Z+6 ; 0x06 + 140c: 8f 70 andi r24, 0x0F ; 15 + 140e: 80 93 e9 00 sts 0x00E9, r24 * \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise. */ static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; static inline bool Endpoint_IsOUTReceived(void) { return ((UEINTX & (1 << RXOUTI)) ? true : false); - 1470: 80 91 e8 00 lds r24, 0x00E8 + 1412: 80 91 e8 00 lds r24, 0x00E8 int16_t ReceivedByte = -1; Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataOUTEndpoint.Address); if (Endpoint_IsOUTReceived()) - 1474: 82 ff sbrs r24, 2 - 1476: 14 c0 rjmp .+40 ; 0x14a0 + 1416: 82 ff sbrs r24, 2 + 1418: 14 c0 rjmp .+40 ; 0x1442 #if (defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)) return UEBCX; #elif defined(USB_SERIES_4_AVR) return (((uint16_t)UEBCHX << 8) | UEBCLX); #elif defined(USB_SERIES_2_AVR) return UEBCLX; - 1478: 80 91 f2 00 lds r24, 0x00F2 + 141a: 80 91 f2 00 lds r24, 0x00F2 { if (Endpoint_BytesInEndpoint()) - 147c: 88 23 and r24, r24 - 147e: 21 f0 breq .+8 ; 0x1488 + 141e: 88 23 and r24, r24 + 1420: 21 f0 breq .+8 ; 0x142a * \return Next byte in the currently selected endpoint's FIFO buffer. */ static inline uint8_t Endpoint_Read_8(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; static inline uint8_t Endpoint_Read_8(void) { return UEDATX; - 1480: 20 91 f1 00 lds r18, 0x00F1 + 1422: 20 91 f1 00 lds r18, 0x00F1 ReceivedByte = Endpoint_Read_8(); - 1484: 30 e0 ldi r19, 0x00 ; 0 - 1486: 02 c0 rjmp .+4 ; 0x148c + 1426: 30 e0 ldi r19, 0x00 ; 0 + 1428: 02 c0 rjmp .+4 ; 0x142e int16_t CDC_Device_ReceiveByte(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) { if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS)) return -1; int16_t ReceivedByte = -1; - 1488: 2f ef ldi r18, 0xFF ; 255 - 148a: 3f ef ldi r19, 0xFF ; 255 + 142a: 2f ef ldi r18, 0xFF ; 255 + 142c: 3f ef ldi r19, 0xFF ; 255 #if (defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)) return UEBCX; #elif defined(USB_SERIES_4_AVR) return (((uint16_t)UEBCHX << 8) | UEBCLX); #elif defined(USB_SERIES_2_AVR) return UEBCLX; - 148c: 80 91 f2 00 lds r24, 0x00F2 + 142e: 80 91 f2 00 lds r24, 0x00F2 if (Endpoint_IsOUTReceived()) { if (Endpoint_BytesInEndpoint()) ReceivedByte = Endpoint_Read_8(); if (!(Endpoint_BytesInEndpoint())) - 1490: 88 23 and r24, r24 - 1492: 41 f4 brne .+16 ; 0x14a4 + 1432: 88 23 and r24, r24 + 1434: 41 f4 brne .+16 ; 0x1446 */ static inline void Endpoint_ClearOUT(void) ATTR_ALWAYS_INLINE; static inline void Endpoint_ClearOUT(void) { #if !defined(CONTROL_ONLY_DEVICE) UEINTX &= ~((1 << RXOUTI) | (1 << FIFOCON)); - 1494: 80 91 e8 00 lds r24, 0x00E8 - 1498: 8b 77 andi r24, 0x7B ; 123 - 149a: 80 93 e8 00 sts 0x00E8, r24 - 149e: 02 c0 rjmp .+4 ; 0x14a4 + 1436: 80 91 e8 00 lds r24, 0x00E8 + 143a: 8b 77 andi r24, 0x7B ; 123 + 143c: 80 93 e8 00 sts 0x00E8, r24 + 1440: 02 c0 rjmp .+4 ; 0x1446 int16_t CDC_Device_ReceiveByte(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) { if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS)) return -1; int16_t ReceivedByte = -1; - 14a0: 2f ef ldi r18, 0xFF ; 255 - 14a2: 3f ef ldi r19, 0xFF ; 255 + 1442: 2f ef ldi r18, 0xFF ; 255 + 1444: 3f ef ldi r19, 0xFF ; 255 if (!(Endpoint_BytesInEndpoint())) Endpoint_ClearOUT(); } return ReceivedByte; } - 14a4: c9 01 movw r24, r18 - 14a6: 08 95 ret + 1446: c9 01 movw r24, r18 + 1448: 08 95 ret -000014a8 : +0000144a : #endif void CDC_Device_Event_Stub(void) { } - 14a8: 08 95 ret - -000014aa <__subsf3>: - 14aa: 50 58 subi r21, 0x80 ; 128 - -000014ac <__addsf3>: - 14ac: bb 27 eor r27, r27 - 14ae: aa 27 eor r26, r26 - 14b0: 0e d0 rcall .+28 ; 0x14ce <__addsf3x> - 14b2: 70 c1 rjmp .+736 ; 0x1794 <__fp_round> - 14b4: 61 d1 rcall .+706 ; 0x1778 <__fp_pscA> - 14b6: 30 f0 brcs .+12 ; 0x14c4 <__addsf3+0x18> - 14b8: 66 d1 rcall .+716 ; 0x1786 <__fp_pscB> - 14ba: 20 f0 brcs .+8 ; 0x14c4 <__addsf3+0x18> - 14bc: 31 f4 brne .+12 ; 0x14ca <__addsf3+0x1e> - 14be: 9f 3f cpi r25, 0xFF ; 255 - 14c0: 11 f4 brne .+4 ; 0x14c6 <__addsf3+0x1a> - 14c2: 1e f4 brtc .+6 ; 0x14ca <__addsf3+0x1e> - 14c4: 56 c1 rjmp .+684 ; 0x1772 <__fp_nan> - 14c6: 0e f4 brtc .+2 ; 0x14ca <__addsf3+0x1e> - 14c8: e0 95 com r30 - 14ca: e7 fb bst r30, 7 - 14cc: 4c c1 rjmp .+664 ; 0x1766 <__fp_inf> - -000014ce <__addsf3x>: - 14ce: e9 2f mov r30, r25 - 14d0: 72 d1 rcall .+740 ; 0x17b6 <__fp_split3> - 14d2: 80 f3 brcs .-32 ; 0x14b4 <__addsf3+0x8> - 14d4: ba 17 cp r27, r26 - 14d6: 62 07 cpc r22, r18 - 14d8: 73 07 cpc r23, r19 - 14da: 84 07 cpc r24, r20 - 14dc: 95 07 cpc r25, r21 - 14de: 18 f0 brcs .+6 ; 0x14e6 <__addsf3x+0x18> - 14e0: 71 f4 brne .+28 ; 0x14fe <__addsf3x+0x30> - 14e2: 9e f5 brtc .+102 ; 0x154a <__addsf3x+0x7c> - 14e4: 8a c1 rjmp .+788 ; 0x17fa <__fp_zero> - 14e6: 0e f4 brtc .+2 ; 0x14ea <__addsf3x+0x1c> - 14e8: e0 95 com r30 - 14ea: 0b 2e mov r0, r27 - 14ec: ba 2f mov r27, r26 - 14ee: a0 2d mov r26, r0 - 14f0: 0b 01 movw r0, r22 - 14f2: b9 01 movw r22, r18 - 14f4: 90 01 movw r18, r0 - 14f6: 0c 01 movw r0, r24 - 14f8: ca 01 movw r24, r20 - 14fa: a0 01 movw r20, r0 - 14fc: 11 24 eor r1, r1 - 14fe: ff 27 eor r31, r31 - 1500: 59 1b sub r21, r25 - 1502: 99 f0 breq .+38 ; 0x152a <__addsf3x+0x5c> - 1504: 59 3f cpi r21, 0xF9 ; 249 - 1506: 50 f4 brcc .+20 ; 0x151c <__addsf3x+0x4e> - 1508: 50 3e cpi r21, 0xE0 ; 224 - 150a: 68 f1 brcs .+90 ; 0x1566 <__addsf3x+0x98> - 150c: 1a 16 cp r1, r26 - 150e: f0 40 sbci r31, 0x00 ; 0 - 1510: a2 2f mov r26, r18 - 1512: 23 2f mov r18, r19 - 1514: 34 2f mov r19, r20 - 1516: 44 27 eor r20, r20 - 1518: 58 5f subi r21, 0xF8 ; 248 - 151a: f3 cf rjmp .-26 ; 0x1502 <__addsf3x+0x34> - 151c: 46 95 lsr r20 - 151e: 37 95 ror r19 - 1520: 27 95 ror r18 - 1522: a7 95 ror r26 - 1524: f0 40 sbci r31, 0x00 ; 0 - 1526: 53 95 inc r21 - 1528: c9 f7 brne .-14 ; 0x151c <__addsf3x+0x4e> - 152a: 7e f4 brtc .+30 ; 0x154a <__addsf3x+0x7c> - 152c: 1f 16 cp r1, r31 - 152e: ba 0b sbc r27, r26 - 1530: 62 0b sbc r22, r18 - 1532: 73 0b sbc r23, r19 - 1534: 84 0b sbc r24, r20 - 1536: ba f0 brmi .+46 ; 0x1566 <__addsf3x+0x98> - 1538: 91 50 subi r25, 0x01 ; 1 - 153a: a1 f0 breq .+40 ; 0x1564 <__addsf3x+0x96> - 153c: ff 0f add r31, r31 - 153e: bb 1f adc r27, r27 - 1540: 66 1f adc r22, r22 - 1542: 77 1f adc r23, r23 - 1544: 88 1f adc r24, r24 - 1546: c2 f7 brpl .-16 ; 0x1538 <__addsf3x+0x6a> - 1548: 0e c0 rjmp .+28 ; 0x1566 <__addsf3x+0x98> - 154a: ba 0f add r27, r26 - 154c: 62 1f adc r22, r18 - 154e: 73 1f adc r23, r19 - 1550: 84 1f adc r24, r20 - 1552: 48 f4 brcc .+18 ; 0x1566 <__addsf3x+0x98> - 1554: 87 95 ror r24 - 1556: 77 95 ror r23 - 1558: 67 95 ror r22 - 155a: b7 95 ror r27 - 155c: f7 95 ror r31 - 155e: 9e 3f cpi r25, 0xFE ; 254 - 1560: 08 f0 brcs .+2 ; 0x1564 <__addsf3x+0x96> - 1562: b3 cf rjmp .-154 ; 0x14ca <__addsf3+0x1e> - 1564: 93 95 inc r25 - 1566: 88 0f add r24, r24 - 1568: 08 f0 brcs .+2 ; 0x156c <__addsf3x+0x9e> - 156a: 99 27 eor r25, r25 - 156c: ee 0f add r30, r30 - 156e: 97 95 ror r25 - 1570: 87 95 ror r24 - 1572: 08 95 ret - -00001574 <__cmpsf2>: - 1574: d4 d0 rcall .+424 ; 0x171e <__fp_cmp> - 1576: 08 f4 brcc .+2 ; 0x157a <__cmpsf2+0x6> - 1578: 81 e0 ldi r24, 0x01 ; 1 - 157a: 08 95 ret - -0000157c <__divsf3>: - 157c: 0c d0 rcall .+24 ; 0x1596 <__divsf3x> - 157e: 0a c1 rjmp .+532 ; 0x1794 <__fp_round> - 1580: 02 d1 rcall .+516 ; 0x1786 <__fp_pscB> - 1582: 40 f0 brcs .+16 ; 0x1594 <__divsf3+0x18> - 1584: f9 d0 rcall .+498 ; 0x1778 <__fp_pscA> - 1586: 30 f0 brcs .+12 ; 0x1594 <__divsf3+0x18> - 1588: 21 f4 brne .+8 ; 0x1592 <__divsf3+0x16> - 158a: 5f 3f cpi r21, 0xFF ; 255 - 158c: 19 f0 breq .+6 ; 0x1594 <__divsf3+0x18> - 158e: eb c0 rjmp .+470 ; 0x1766 <__fp_inf> - 1590: 51 11 cpse r21, r1 - 1592: 34 c1 rjmp .+616 ; 0x17fc <__fp_szero> - 1594: ee c0 rjmp .+476 ; 0x1772 <__fp_nan> - -00001596 <__divsf3x>: - 1596: 0f d1 rcall .+542 ; 0x17b6 <__fp_split3> - 1598: 98 f3 brcs .-26 ; 0x1580 <__divsf3+0x4> - -0000159a <__divsf3_pse>: - 159a: 99 23 and r25, r25 - 159c: c9 f3 breq .-14 ; 0x1590 <__divsf3+0x14> - 159e: 55 23 and r21, r21 - 15a0: b1 f3 breq .-20 ; 0x158e <__divsf3+0x12> - 15a2: 95 1b sub r25, r21 - 15a4: 55 0b sbc r21, r21 - 15a6: bb 27 eor r27, r27 - 15a8: aa 27 eor r26, r26 - 15aa: 62 17 cp r22, r18 - 15ac: 73 07 cpc r23, r19 - 15ae: 84 07 cpc r24, r20 - 15b0: 38 f0 brcs .+14 ; 0x15c0 <__divsf3_pse+0x26> - 15b2: 9f 5f subi r25, 0xFF ; 255 - 15b4: 5f 4f sbci r21, 0xFF ; 255 - 15b6: 22 0f add r18, r18 - 15b8: 33 1f adc r19, r19 - 15ba: 44 1f adc r20, r20 - 15bc: aa 1f adc r26, r26 - 15be: a9 f3 breq .-22 ; 0x15aa <__divsf3_pse+0x10> - 15c0: 33 d0 rcall .+102 ; 0x1628 <__divsf3_pse+0x8e> - 15c2: 0e 2e mov r0, r30 - 15c4: 3a f0 brmi .+14 ; 0x15d4 <__divsf3_pse+0x3a> - 15c6: e0 e8 ldi r30, 0x80 ; 128 - 15c8: 30 d0 rcall .+96 ; 0x162a <__divsf3_pse+0x90> - 15ca: 91 50 subi r25, 0x01 ; 1 - 15cc: 50 40 sbci r21, 0x00 ; 0 - 15ce: e6 95 lsr r30 - 15d0: 00 1c adc r0, r0 - 15d2: ca f7 brpl .-14 ; 0x15c6 <__divsf3_pse+0x2c> - 15d4: 29 d0 rcall .+82 ; 0x1628 <__divsf3_pse+0x8e> - 15d6: fe 2f mov r31, r30 - 15d8: 27 d0 rcall .+78 ; 0x1628 <__divsf3_pse+0x8e> - 15da: 66 0f add r22, r22 - 15dc: 77 1f adc r23, r23 - 15de: 88 1f adc r24, r24 - 15e0: bb 1f adc r27, r27 - 15e2: 26 17 cp r18, r22 - 15e4: 37 07 cpc r19, r23 - 15e6: 48 07 cpc r20, r24 - 15e8: ab 07 cpc r26, r27 - 15ea: b0 e8 ldi r27, 0x80 ; 128 - 15ec: 09 f0 breq .+2 ; 0x15f0 <__divsf3_pse+0x56> - 15ee: bb 0b sbc r27, r27 - 15f0: 80 2d mov r24, r0 - 15f2: bf 01 movw r22, r30 - 15f4: ff 27 eor r31, r31 - 15f6: 93 58 subi r25, 0x83 ; 131 - 15f8: 5f 4f sbci r21, 0xFF ; 255 - 15fa: 2a f0 brmi .+10 ; 0x1606 <__divsf3_pse+0x6c> - 15fc: 9e 3f cpi r25, 0xFE ; 254 - 15fe: 51 05 cpc r21, r1 - 1600: 68 f0 brcs .+26 ; 0x161c <__divsf3_pse+0x82> - 1602: b1 c0 rjmp .+354 ; 0x1766 <__fp_inf> - 1604: fb c0 rjmp .+502 ; 0x17fc <__fp_szero> - 1606: 5f 3f cpi r21, 0xFF ; 255 - 1608: ec f3 brlt .-6 ; 0x1604 <__divsf3_pse+0x6a> - 160a: 98 3e cpi r25, 0xE8 ; 232 - 160c: dc f3 brlt .-10 ; 0x1604 <__divsf3_pse+0x6a> - 160e: 86 95 lsr r24 - 1610: 77 95 ror r23 - 1612: 67 95 ror r22 - 1614: b7 95 ror r27 - 1616: f7 95 ror r31 - 1618: 9f 5f subi r25, 0xFF ; 255 - 161a: c9 f7 brne .-14 ; 0x160e <__divsf3_pse+0x74> - 161c: 88 0f add r24, r24 - 161e: 91 1d adc r25, r1 - 1620: 96 95 lsr r25 - 1622: 87 95 ror r24 - 1624: 97 f9 bld r25, 7 - 1626: 08 95 ret - 1628: e1 e0 ldi r30, 0x01 ; 1 - 162a: 66 0f add r22, r22 - 162c: 77 1f adc r23, r23 - 162e: 88 1f adc r24, r24 - 1630: bb 1f adc r27, r27 - 1632: 62 17 cp r22, r18 - 1634: 73 07 cpc r23, r19 - 1636: 84 07 cpc r24, r20 - 1638: ba 07 cpc r27, r26 - 163a: 20 f0 brcs .+8 ; 0x1644 <__divsf3_pse+0xaa> - 163c: 62 1b sub r22, r18 - 163e: 73 0b sbc r23, r19 - 1640: 84 0b sbc r24, r20 - 1642: ba 0b sbc r27, r26 - 1644: ee 1f adc r30, r30 - 1646: 88 f7 brcc .-30 ; 0x162a <__divsf3_pse+0x90> - 1648: e0 95 com r30 - 164a: 08 95 ret - -0000164c <__fixunssfsi>: - 164c: bc d0 rcall .+376 ; 0x17c6 <__fp_splitA> - 164e: 88 f0 brcs .+34 ; 0x1672 <__fixunssfsi+0x26> - 1650: 9f 57 subi r25, 0x7F ; 127 - 1652: 90 f0 brcs .+36 ; 0x1678 <__fixunssfsi+0x2c> - 1654: b9 2f mov r27, r25 - 1656: 99 27 eor r25, r25 - 1658: b7 51 subi r27, 0x17 ; 23 - 165a: a0 f0 brcs .+40 ; 0x1684 <__fixunssfsi+0x38> - 165c: d1 f0 breq .+52 ; 0x1692 <__fixunssfsi+0x46> - 165e: 66 0f add r22, r22 - 1660: 77 1f adc r23, r23 - 1662: 88 1f adc r24, r24 - 1664: 99 1f adc r25, r25 - 1666: 1a f0 brmi .+6 ; 0x166e <__fixunssfsi+0x22> - 1668: ba 95 dec r27 - 166a: c9 f7 brne .-14 ; 0x165e <__fixunssfsi+0x12> - 166c: 12 c0 rjmp .+36 ; 0x1692 <__fixunssfsi+0x46> - 166e: b1 30 cpi r27, 0x01 ; 1 - 1670: 81 f0 breq .+32 ; 0x1692 <__fixunssfsi+0x46> - 1672: c3 d0 rcall .+390 ; 0x17fa <__fp_zero> - 1674: b1 e0 ldi r27, 0x01 ; 1 - 1676: 08 95 ret - 1678: c0 c0 rjmp .+384 ; 0x17fa <__fp_zero> - 167a: 67 2f mov r22, r23 - 167c: 78 2f mov r23, r24 - 167e: 88 27 eor r24, r24 - 1680: b8 5f subi r27, 0xF8 ; 248 - 1682: 39 f0 breq .+14 ; 0x1692 <__fixunssfsi+0x46> - 1684: b9 3f cpi r27, 0xF9 ; 249 - 1686: cc f3 brlt .-14 ; 0x167a <__fixunssfsi+0x2e> - 1688: 86 95 lsr r24 - 168a: 77 95 ror r23 - 168c: 67 95 ror r22 - 168e: b3 95 inc r27 - 1690: d9 f7 brne .-10 ; 0x1688 <__fixunssfsi+0x3c> - 1692: 3e f4 brtc .+14 ; 0x16a2 <__fixunssfsi+0x56> - 1694: 90 95 com r25 - 1696: 80 95 com r24 - 1698: 70 95 com r23 - 169a: 61 95 neg r22 - 169c: 7f 4f sbci r23, 0xFF ; 255 - 169e: 8f 4f sbci r24, 0xFF ; 255 - 16a0: 9f 4f sbci r25, 0xFF ; 255 - 16a2: 08 95 ret - -000016a4 <__floatunsisf>: - 16a4: e8 94 clt - 16a6: 09 c0 rjmp .+18 ; 0x16ba <__floatsisf+0x12> - -000016a8 <__floatsisf>: - 16a8: 97 fb bst r25, 7 - 16aa: 3e f4 brtc .+14 ; 0x16ba <__floatsisf+0x12> - 16ac: 90 95 com r25 - 16ae: 80 95 com r24 - 16b0: 70 95 com r23 - 16b2: 61 95 neg r22 - 16b4: 7f 4f sbci r23, 0xFF ; 255 - 16b6: 8f 4f sbci r24, 0xFF ; 255 - 16b8: 9f 4f sbci r25, 0xFF ; 255 - 16ba: 99 23 and r25, r25 - 16bc: a9 f0 breq .+42 ; 0x16e8 <__floatsisf+0x40> - 16be: f9 2f mov r31, r25 - 16c0: 96 e9 ldi r25, 0x96 ; 150 - 16c2: bb 27 eor r27, r27 - 16c4: 93 95 inc r25 - 16c6: f6 95 lsr r31 - 16c8: 87 95 ror r24 - 16ca: 77 95 ror r23 - 16cc: 67 95 ror r22 - 16ce: b7 95 ror r27 - 16d0: f1 11 cpse r31, r1 - 16d2: f8 cf rjmp .-16 ; 0x16c4 <__floatsisf+0x1c> - 16d4: fa f4 brpl .+62 ; 0x1714 <__floatsisf+0x6c> - 16d6: bb 0f add r27, r27 - 16d8: 11 f4 brne .+4 ; 0x16de <__floatsisf+0x36> - 16da: 60 ff sbrs r22, 0 - 16dc: 1b c0 rjmp .+54 ; 0x1714 <__floatsisf+0x6c> - 16de: 6f 5f subi r22, 0xFF ; 255 - 16e0: 7f 4f sbci r23, 0xFF ; 255 - 16e2: 8f 4f sbci r24, 0xFF ; 255 - 16e4: 9f 4f sbci r25, 0xFF ; 255 - 16e6: 16 c0 rjmp .+44 ; 0x1714 <__floatsisf+0x6c> - 16e8: 88 23 and r24, r24 - 16ea: 11 f0 breq .+4 ; 0x16f0 <__floatsisf+0x48> - 16ec: 96 e9 ldi r25, 0x96 ; 150 - 16ee: 11 c0 rjmp .+34 ; 0x1712 <__floatsisf+0x6a> - 16f0: 77 23 and r23, r23 - 16f2: 21 f0 breq .+8 ; 0x16fc <__floatsisf+0x54> - 16f4: 9e e8 ldi r25, 0x8E ; 142 - 16f6: 87 2f mov r24, r23 - 16f8: 76 2f mov r23, r22 - 16fa: 05 c0 rjmp .+10 ; 0x1706 <__floatsisf+0x5e> - 16fc: 66 23 and r22, r22 - 16fe: 71 f0 breq .+28 ; 0x171c <__floatsisf+0x74> - 1700: 96 e8 ldi r25, 0x86 ; 134 - 1702: 86 2f mov r24, r22 - 1704: 70 e0 ldi r23, 0x00 ; 0 - 1706: 60 e0 ldi r22, 0x00 ; 0 - 1708: 2a f0 brmi .+10 ; 0x1714 <__floatsisf+0x6c> - 170a: 9a 95 dec r25 - 170c: 66 0f add r22, r22 - 170e: 77 1f adc r23, r23 - 1710: 88 1f adc r24, r24 - 1712: da f7 brpl .-10 ; 0x170a <__floatsisf+0x62> - 1714: 88 0f add r24, r24 - 1716: 96 95 lsr r25 - 1718: 87 95 ror r24 - 171a: 97 f9 bld r25, 7 - 171c: 08 95 ret - -0000171e <__fp_cmp>: - 171e: 99 0f add r25, r25 - 1720: 00 08 sbc r0, r0 - 1722: 55 0f add r21, r21 - 1724: aa 0b sbc r26, r26 - 1726: e0 e8 ldi r30, 0x80 ; 128 - 1728: fe ef ldi r31, 0xFE ; 254 - 172a: 16 16 cp r1, r22 - 172c: 17 06 cpc r1, r23 - 172e: e8 07 cpc r30, r24 - 1730: f9 07 cpc r31, r25 - 1732: c0 f0 brcs .+48 ; 0x1764 <__fp_cmp+0x46> - 1734: 12 16 cp r1, r18 - 1736: 13 06 cpc r1, r19 - 1738: e4 07 cpc r30, r20 - 173a: f5 07 cpc r31, r21 - 173c: 98 f0 brcs .+38 ; 0x1764 <__fp_cmp+0x46> - 173e: 62 1b sub r22, r18 - 1740: 73 0b sbc r23, r19 - 1742: 84 0b sbc r24, r20 - 1744: 95 0b sbc r25, r21 - 1746: 39 f4 brne .+14 ; 0x1756 <__fp_cmp+0x38> - 1748: 0a 26 eor r0, r26 - 174a: 61 f0 breq .+24 ; 0x1764 <__fp_cmp+0x46> - 174c: 23 2b or r18, r19 - 174e: 24 2b or r18, r20 - 1750: 25 2b or r18, r21 - 1752: 21 f4 brne .+8 ; 0x175c <__fp_cmp+0x3e> - 1754: 08 95 ret - 1756: 0a 26 eor r0, r26 - 1758: 09 f4 brne .+2 ; 0x175c <__fp_cmp+0x3e> - 175a: a1 40 sbci r26, 0x01 ; 1 - 175c: a6 95 lsr r26 - 175e: 8f ef ldi r24, 0xFF ; 255 - 1760: 81 1d adc r24, r1 - 1762: 81 1d adc r24, r1 - 1764: 08 95 ret - -00001766 <__fp_inf>: - 1766: 97 f9 bld r25, 7 - 1768: 9f 67 ori r25, 0x7F ; 127 - 176a: 80 e8 ldi r24, 0x80 ; 128 - 176c: 70 e0 ldi r23, 0x00 ; 0 - 176e: 60 e0 ldi r22, 0x00 ; 0 - 1770: 08 95 ret - -00001772 <__fp_nan>: - 1772: 9f ef ldi r25, 0xFF ; 255 - 1774: 80 ec ldi r24, 0xC0 ; 192 + 144a: 08 95 ret + +0000144c <__subsf3>: + 144c: 50 58 subi r21, 0x80 ; 128 + +0000144e <__addsf3>: + 144e: bb 27 eor r27, r27 + 1450: aa 27 eor r26, r26 + 1452: 0e d0 rcall .+28 ; 0x1470 <__addsf3x> + 1454: 70 c1 rjmp .+736 ; 0x1736 <__fp_round> + 1456: 61 d1 rcall .+706 ; 0x171a <__fp_pscA> + 1458: 30 f0 brcs .+12 ; 0x1466 <__addsf3+0x18> + 145a: 66 d1 rcall .+716 ; 0x1728 <__fp_pscB> + 145c: 20 f0 brcs .+8 ; 0x1466 <__addsf3+0x18> + 145e: 31 f4 brne .+12 ; 0x146c <__addsf3+0x1e> + 1460: 9f 3f cpi r25, 0xFF ; 255 + 1462: 11 f4 brne .+4 ; 0x1468 <__addsf3+0x1a> + 1464: 1e f4 brtc .+6 ; 0x146c <__addsf3+0x1e> + 1466: 56 c1 rjmp .+684 ; 0x1714 <__fp_nan> + 1468: 0e f4 brtc .+2 ; 0x146c <__addsf3+0x1e> + 146a: e0 95 com r30 + 146c: e7 fb bst r30, 7 + 146e: 4c c1 rjmp .+664 ; 0x1708 <__fp_inf> + +00001470 <__addsf3x>: + 1470: e9 2f mov r30, r25 + 1472: 72 d1 rcall .+740 ; 0x1758 <__fp_split3> + 1474: 80 f3 brcs .-32 ; 0x1456 <__addsf3+0x8> + 1476: ba 17 cp r27, r26 + 1478: 62 07 cpc r22, r18 + 147a: 73 07 cpc r23, r19 + 147c: 84 07 cpc r24, r20 + 147e: 95 07 cpc r25, r21 + 1480: 18 f0 brcs .+6 ; 0x1488 <__addsf3x+0x18> + 1482: 71 f4 brne .+28 ; 0x14a0 <__addsf3x+0x30> + 1484: 9e f5 brtc .+102 ; 0x14ec <__addsf3x+0x7c> + 1486: 8a c1 rjmp .+788 ; 0x179c <__fp_zero> + 1488: 0e f4 brtc .+2 ; 0x148c <__addsf3x+0x1c> + 148a: e0 95 com r30 + 148c: 0b 2e mov r0, r27 + 148e: ba 2f mov r27, r26 + 1490: a0 2d mov r26, r0 + 1492: 0b 01 movw r0, r22 + 1494: b9 01 movw r22, r18 + 1496: 90 01 movw r18, r0 + 1498: 0c 01 movw r0, r24 + 149a: ca 01 movw r24, r20 + 149c: a0 01 movw r20, r0 + 149e: 11 24 eor r1, r1 + 14a0: ff 27 eor r31, r31 + 14a2: 59 1b sub r21, r25 + 14a4: 99 f0 breq .+38 ; 0x14cc <__addsf3x+0x5c> + 14a6: 59 3f cpi r21, 0xF9 ; 249 + 14a8: 50 f4 brcc .+20 ; 0x14be <__addsf3x+0x4e> + 14aa: 50 3e cpi r21, 0xE0 ; 224 + 14ac: 68 f1 brcs .+90 ; 0x1508 <__addsf3x+0x98> + 14ae: 1a 16 cp r1, r26 + 14b0: f0 40 sbci r31, 0x00 ; 0 + 14b2: a2 2f mov r26, r18 + 14b4: 23 2f mov r18, r19 + 14b6: 34 2f mov r19, r20 + 14b8: 44 27 eor r20, r20 + 14ba: 58 5f subi r21, 0xF8 ; 248 + 14bc: f3 cf rjmp .-26 ; 0x14a4 <__addsf3x+0x34> + 14be: 46 95 lsr r20 + 14c0: 37 95 ror r19 + 14c2: 27 95 ror r18 + 14c4: a7 95 ror r26 + 14c6: f0 40 sbci r31, 0x00 ; 0 + 14c8: 53 95 inc r21 + 14ca: c9 f7 brne .-14 ; 0x14be <__addsf3x+0x4e> + 14cc: 7e f4 brtc .+30 ; 0x14ec <__addsf3x+0x7c> + 14ce: 1f 16 cp r1, r31 + 14d0: ba 0b sbc r27, r26 + 14d2: 62 0b sbc r22, r18 + 14d4: 73 0b sbc r23, r19 + 14d6: 84 0b sbc r24, r20 + 14d8: ba f0 brmi .+46 ; 0x1508 <__addsf3x+0x98> + 14da: 91 50 subi r25, 0x01 ; 1 + 14dc: a1 f0 breq .+40 ; 0x1506 <__addsf3x+0x96> + 14de: ff 0f add r31, r31 + 14e0: bb 1f adc r27, r27 + 14e2: 66 1f adc r22, r22 + 14e4: 77 1f adc r23, r23 + 14e6: 88 1f adc r24, r24 + 14e8: c2 f7 brpl .-16 ; 0x14da <__addsf3x+0x6a> + 14ea: 0e c0 rjmp .+28 ; 0x1508 <__addsf3x+0x98> + 14ec: ba 0f add r27, r26 + 14ee: 62 1f adc r22, r18 + 14f0: 73 1f adc r23, r19 + 14f2: 84 1f adc r24, r20 + 14f4: 48 f4 brcc .+18 ; 0x1508 <__addsf3x+0x98> + 14f6: 87 95 ror r24 + 14f8: 77 95 ror r23 + 14fa: 67 95 ror r22 + 14fc: b7 95 ror r27 + 14fe: f7 95 ror r31 + 1500: 9e 3f cpi r25, 0xFE ; 254 + 1502: 08 f0 brcs .+2 ; 0x1506 <__addsf3x+0x96> + 1504: b3 cf rjmp .-154 ; 0x146c <__addsf3+0x1e> + 1506: 93 95 inc r25 + 1508: 88 0f add r24, r24 + 150a: 08 f0 brcs .+2 ; 0x150e <__addsf3x+0x9e> + 150c: 99 27 eor r25, r25 + 150e: ee 0f add r30, r30 + 1510: 97 95 ror r25 + 1512: 87 95 ror r24 + 1514: 08 95 ret + +00001516 <__cmpsf2>: + 1516: d4 d0 rcall .+424 ; 0x16c0 <__fp_cmp> + 1518: 08 f4 brcc .+2 ; 0x151c <__cmpsf2+0x6> + 151a: 81 e0 ldi r24, 0x01 ; 1 + 151c: 08 95 ret + +0000151e <__divsf3>: + 151e: 0c d0 rcall .+24 ; 0x1538 <__divsf3x> + 1520: 0a c1 rjmp .+532 ; 0x1736 <__fp_round> + 1522: 02 d1 rcall .+516 ; 0x1728 <__fp_pscB> + 1524: 40 f0 brcs .+16 ; 0x1536 <__divsf3+0x18> + 1526: f9 d0 rcall .+498 ; 0x171a <__fp_pscA> + 1528: 30 f0 brcs .+12 ; 0x1536 <__divsf3+0x18> + 152a: 21 f4 brne .+8 ; 0x1534 <__divsf3+0x16> + 152c: 5f 3f cpi r21, 0xFF ; 255 + 152e: 19 f0 breq .+6 ; 0x1536 <__divsf3+0x18> + 1530: eb c0 rjmp .+470 ; 0x1708 <__fp_inf> + 1532: 51 11 cpse r21, r1 + 1534: 34 c1 rjmp .+616 ; 0x179e <__fp_szero> + 1536: ee c0 rjmp .+476 ; 0x1714 <__fp_nan> + +00001538 <__divsf3x>: + 1538: 0f d1 rcall .+542 ; 0x1758 <__fp_split3> + 153a: 98 f3 brcs .-26 ; 0x1522 <__divsf3+0x4> + +0000153c <__divsf3_pse>: + 153c: 99 23 and r25, r25 + 153e: c9 f3 breq .-14 ; 0x1532 <__divsf3+0x14> + 1540: 55 23 and r21, r21 + 1542: b1 f3 breq .-20 ; 0x1530 <__divsf3+0x12> + 1544: 95 1b sub r25, r21 + 1546: 55 0b sbc r21, r21 + 1548: bb 27 eor r27, r27 + 154a: aa 27 eor r26, r26 + 154c: 62 17 cp r22, r18 + 154e: 73 07 cpc r23, r19 + 1550: 84 07 cpc r24, r20 + 1552: 38 f0 brcs .+14 ; 0x1562 <__divsf3_pse+0x26> + 1554: 9f 5f subi r25, 0xFF ; 255 + 1556: 5f 4f sbci r21, 0xFF ; 255 + 1558: 22 0f add r18, r18 + 155a: 33 1f adc r19, r19 + 155c: 44 1f adc r20, r20 + 155e: aa 1f adc r26, r26 + 1560: a9 f3 breq .-22 ; 0x154c <__divsf3_pse+0x10> + 1562: 33 d0 rcall .+102 ; 0x15ca <__divsf3_pse+0x8e> + 1564: 0e 2e mov r0, r30 + 1566: 3a f0 brmi .+14 ; 0x1576 <__divsf3_pse+0x3a> + 1568: e0 e8 ldi r30, 0x80 ; 128 + 156a: 30 d0 rcall .+96 ; 0x15cc <__divsf3_pse+0x90> + 156c: 91 50 subi r25, 0x01 ; 1 + 156e: 50 40 sbci r21, 0x00 ; 0 + 1570: e6 95 lsr r30 + 1572: 00 1c adc r0, r0 + 1574: ca f7 brpl .-14 ; 0x1568 <__divsf3_pse+0x2c> + 1576: 29 d0 rcall .+82 ; 0x15ca <__divsf3_pse+0x8e> + 1578: fe 2f mov r31, r30 + 157a: 27 d0 rcall .+78 ; 0x15ca <__divsf3_pse+0x8e> + 157c: 66 0f add r22, r22 + 157e: 77 1f adc r23, r23 + 1580: 88 1f adc r24, r24 + 1582: bb 1f adc r27, r27 + 1584: 26 17 cp r18, r22 + 1586: 37 07 cpc r19, r23 + 1588: 48 07 cpc r20, r24 + 158a: ab 07 cpc r26, r27 + 158c: b0 e8 ldi r27, 0x80 ; 128 + 158e: 09 f0 breq .+2 ; 0x1592 <__divsf3_pse+0x56> + 1590: bb 0b sbc r27, r27 + 1592: 80 2d mov r24, r0 + 1594: bf 01 movw r22, r30 + 1596: ff 27 eor r31, r31 + 1598: 93 58 subi r25, 0x83 ; 131 + 159a: 5f 4f sbci r21, 0xFF ; 255 + 159c: 2a f0 brmi .+10 ; 0x15a8 <__divsf3_pse+0x6c> + 159e: 9e 3f cpi r25, 0xFE ; 254 + 15a0: 51 05 cpc r21, r1 + 15a2: 68 f0 brcs .+26 ; 0x15be <__divsf3_pse+0x82> + 15a4: b1 c0 rjmp .+354 ; 0x1708 <__fp_inf> + 15a6: fb c0 rjmp .+502 ; 0x179e <__fp_szero> + 15a8: 5f 3f cpi r21, 0xFF ; 255 + 15aa: ec f3 brlt .-6 ; 0x15a6 <__divsf3_pse+0x6a> + 15ac: 98 3e cpi r25, 0xE8 ; 232 + 15ae: dc f3 brlt .-10 ; 0x15a6 <__divsf3_pse+0x6a> + 15b0: 86 95 lsr r24 + 15b2: 77 95 ror r23 + 15b4: 67 95 ror r22 + 15b6: b7 95 ror r27 + 15b8: f7 95 ror r31 + 15ba: 9f 5f subi r25, 0xFF ; 255 + 15bc: c9 f7 brne .-14 ; 0x15b0 <__divsf3_pse+0x74> + 15be: 88 0f add r24, r24 + 15c0: 91 1d adc r25, r1 + 15c2: 96 95 lsr r25 + 15c4: 87 95 ror r24 + 15c6: 97 f9 bld r25, 7 + 15c8: 08 95 ret + 15ca: e1 e0 ldi r30, 0x01 ; 1 + 15cc: 66 0f add r22, r22 + 15ce: 77 1f adc r23, r23 + 15d0: 88 1f adc r24, r24 + 15d2: bb 1f adc r27, r27 + 15d4: 62 17 cp r22, r18 + 15d6: 73 07 cpc r23, r19 + 15d8: 84 07 cpc r24, r20 + 15da: ba 07 cpc r27, r26 + 15dc: 20 f0 brcs .+8 ; 0x15e6 <__divsf3_pse+0xaa> + 15de: 62 1b sub r22, r18 + 15e0: 73 0b sbc r23, r19 + 15e2: 84 0b sbc r24, r20 + 15e4: ba 0b sbc r27, r26 + 15e6: ee 1f adc r30, r30 + 15e8: 88 f7 brcc .-30 ; 0x15cc <__divsf3_pse+0x90> + 15ea: e0 95 com r30 + 15ec: 08 95 ret + +000015ee <__fixunssfsi>: + 15ee: bc d0 rcall .+376 ; 0x1768 <__fp_splitA> + 15f0: 88 f0 brcs .+34 ; 0x1614 <__fixunssfsi+0x26> + 15f2: 9f 57 subi r25, 0x7F ; 127 + 15f4: 90 f0 brcs .+36 ; 0x161a <__fixunssfsi+0x2c> + 15f6: b9 2f mov r27, r25 + 15f8: 99 27 eor r25, r25 + 15fa: b7 51 subi r27, 0x17 ; 23 + 15fc: a0 f0 brcs .+40 ; 0x1626 <__fixunssfsi+0x38> + 15fe: d1 f0 breq .+52 ; 0x1634 <__fixunssfsi+0x46> + 1600: 66 0f add r22, r22 + 1602: 77 1f adc r23, r23 + 1604: 88 1f adc r24, r24 + 1606: 99 1f adc r25, r25 + 1608: 1a f0 brmi .+6 ; 0x1610 <__fixunssfsi+0x22> + 160a: ba 95 dec r27 + 160c: c9 f7 brne .-14 ; 0x1600 <__fixunssfsi+0x12> + 160e: 12 c0 rjmp .+36 ; 0x1634 <__fixunssfsi+0x46> + 1610: b1 30 cpi r27, 0x01 ; 1 + 1612: 81 f0 breq .+32 ; 0x1634 <__fixunssfsi+0x46> + 1614: c3 d0 rcall .+390 ; 0x179c <__fp_zero> + 1616: b1 e0 ldi r27, 0x01 ; 1 + 1618: 08 95 ret + 161a: c0 c0 rjmp .+384 ; 0x179c <__fp_zero> + 161c: 67 2f mov r22, r23 + 161e: 78 2f mov r23, r24 + 1620: 88 27 eor r24, r24 + 1622: b8 5f subi r27, 0xF8 ; 248 + 1624: 39 f0 breq .+14 ; 0x1634 <__fixunssfsi+0x46> + 1626: b9 3f cpi r27, 0xF9 ; 249 + 1628: cc f3 brlt .-14 ; 0x161c <__fixunssfsi+0x2e> + 162a: 86 95 lsr r24 + 162c: 77 95 ror r23 + 162e: 67 95 ror r22 + 1630: b3 95 inc r27 + 1632: d9 f7 brne .-10 ; 0x162a <__fixunssfsi+0x3c> + 1634: 3e f4 brtc .+14 ; 0x1644 <__fixunssfsi+0x56> + 1636: 90 95 com r25 + 1638: 80 95 com r24 + 163a: 70 95 com r23 + 163c: 61 95 neg r22 + 163e: 7f 4f sbci r23, 0xFF ; 255 + 1640: 8f 4f sbci r24, 0xFF ; 255 + 1642: 9f 4f sbci r25, 0xFF ; 255 + 1644: 08 95 ret + +00001646 <__floatunsisf>: + 1646: e8 94 clt + 1648: 09 c0 rjmp .+18 ; 0x165c <__floatsisf+0x12> + +0000164a <__floatsisf>: + 164a: 97 fb bst r25, 7 + 164c: 3e f4 brtc .+14 ; 0x165c <__floatsisf+0x12> + 164e: 90 95 com r25 + 1650: 80 95 com r24 + 1652: 70 95 com r23 + 1654: 61 95 neg r22 + 1656: 7f 4f sbci r23, 0xFF ; 255 + 1658: 8f 4f sbci r24, 0xFF ; 255 + 165a: 9f 4f sbci r25, 0xFF ; 255 + 165c: 99 23 and r25, r25 + 165e: a9 f0 breq .+42 ; 0x168a <__floatsisf+0x40> + 1660: f9 2f mov r31, r25 + 1662: 96 e9 ldi r25, 0x96 ; 150 + 1664: bb 27 eor r27, r27 + 1666: 93 95 inc r25 + 1668: f6 95 lsr r31 + 166a: 87 95 ror r24 + 166c: 77 95 ror r23 + 166e: 67 95 ror r22 + 1670: b7 95 ror r27 + 1672: f1 11 cpse r31, r1 + 1674: f8 cf rjmp .-16 ; 0x1666 <__floatsisf+0x1c> + 1676: fa f4 brpl .+62 ; 0x16b6 <__floatsisf+0x6c> + 1678: bb 0f add r27, r27 + 167a: 11 f4 brne .+4 ; 0x1680 <__floatsisf+0x36> + 167c: 60 ff sbrs r22, 0 + 167e: 1b c0 rjmp .+54 ; 0x16b6 <__floatsisf+0x6c> + 1680: 6f 5f subi r22, 0xFF ; 255 + 1682: 7f 4f sbci r23, 0xFF ; 255 + 1684: 8f 4f sbci r24, 0xFF ; 255 + 1686: 9f 4f sbci r25, 0xFF ; 255 + 1688: 16 c0 rjmp .+44 ; 0x16b6 <__floatsisf+0x6c> + 168a: 88 23 and r24, r24 + 168c: 11 f0 breq .+4 ; 0x1692 <__floatsisf+0x48> + 168e: 96 e9 ldi r25, 0x96 ; 150 + 1690: 11 c0 rjmp .+34 ; 0x16b4 <__floatsisf+0x6a> + 1692: 77 23 and r23, r23 + 1694: 21 f0 breq .+8 ; 0x169e <__floatsisf+0x54> + 1696: 9e e8 ldi r25, 0x8E ; 142 + 1698: 87 2f mov r24, r23 + 169a: 76 2f mov r23, r22 + 169c: 05 c0 rjmp .+10 ; 0x16a8 <__floatsisf+0x5e> + 169e: 66 23 and r22, r22 + 16a0: 71 f0 breq .+28 ; 0x16be <__floatsisf+0x74> + 16a2: 96 e8 ldi r25, 0x86 ; 134 + 16a4: 86 2f mov r24, r22 + 16a6: 70 e0 ldi r23, 0x00 ; 0 + 16a8: 60 e0 ldi r22, 0x00 ; 0 + 16aa: 2a f0 brmi .+10 ; 0x16b6 <__floatsisf+0x6c> + 16ac: 9a 95 dec r25 + 16ae: 66 0f add r22, r22 + 16b0: 77 1f adc r23, r23 + 16b2: 88 1f adc r24, r24 + 16b4: da f7 brpl .-10 ; 0x16ac <__floatsisf+0x62> + 16b6: 88 0f add r24, r24 + 16b8: 96 95 lsr r25 + 16ba: 87 95 ror r24 + 16bc: 97 f9 bld r25, 7 + 16be: 08 95 ret + +000016c0 <__fp_cmp>: + 16c0: 99 0f add r25, r25 + 16c2: 00 08 sbc r0, r0 + 16c4: 55 0f add r21, r21 + 16c6: aa 0b sbc r26, r26 + 16c8: e0 e8 ldi r30, 0x80 ; 128 + 16ca: fe ef ldi r31, 0xFE ; 254 + 16cc: 16 16 cp r1, r22 + 16ce: 17 06 cpc r1, r23 + 16d0: e8 07 cpc r30, r24 + 16d2: f9 07 cpc r31, r25 + 16d4: c0 f0 brcs .+48 ; 0x1706 <__fp_cmp+0x46> + 16d6: 12 16 cp r1, r18 + 16d8: 13 06 cpc r1, r19 + 16da: e4 07 cpc r30, r20 + 16dc: f5 07 cpc r31, r21 + 16de: 98 f0 brcs .+38 ; 0x1706 <__fp_cmp+0x46> + 16e0: 62 1b sub r22, r18 + 16e2: 73 0b sbc r23, r19 + 16e4: 84 0b sbc r24, r20 + 16e6: 95 0b sbc r25, r21 + 16e8: 39 f4 brne .+14 ; 0x16f8 <__fp_cmp+0x38> + 16ea: 0a 26 eor r0, r26 + 16ec: 61 f0 breq .+24 ; 0x1706 <__fp_cmp+0x46> + 16ee: 23 2b or r18, r19 + 16f0: 24 2b or r18, r20 + 16f2: 25 2b or r18, r21 + 16f4: 21 f4 brne .+8 ; 0x16fe <__fp_cmp+0x3e> + 16f6: 08 95 ret + 16f8: 0a 26 eor r0, r26 + 16fa: 09 f4 brne .+2 ; 0x16fe <__fp_cmp+0x3e> + 16fc: a1 40 sbci r26, 0x01 ; 1 + 16fe: a6 95 lsr r26 + 1700: 8f ef ldi r24, 0xFF ; 255 + 1702: 81 1d adc r24, r1 + 1704: 81 1d adc r24, r1 + 1706: 08 95 ret + +00001708 <__fp_inf>: + 1708: 97 f9 bld r25, 7 + 170a: 9f 67 ori r25, 0x7F ; 127 + 170c: 80 e8 ldi r24, 0x80 ; 128 + 170e: 70 e0 ldi r23, 0x00 ; 0 + 1710: 60 e0 ldi r22, 0x00 ; 0 + 1712: 08 95 ret + +00001714 <__fp_nan>: + 1714: 9f ef ldi r25, 0xFF ; 255 + 1716: 80 ec ldi r24, 0xC0 ; 192 + 1718: 08 95 ret + +0000171a <__fp_pscA>: + 171a: 00 24 eor r0, r0 + 171c: 0a 94 dec r0 + 171e: 16 16 cp r1, r22 + 1720: 17 06 cpc r1, r23 + 1722: 18 06 cpc r1, r24 + 1724: 09 06 cpc r0, r25 + 1726: 08 95 ret + +00001728 <__fp_pscB>: + 1728: 00 24 eor r0, r0 + 172a: 0a 94 dec r0 + 172c: 12 16 cp r1, r18 + 172e: 13 06 cpc r1, r19 + 1730: 14 06 cpc r1, r20 + 1732: 05 06 cpc r0, r21 + 1734: 08 95 ret + +00001736 <__fp_round>: + 1736: 09 2e mov r0, r25 + 1738: 03 94 inc r0 + 173a: 00 0c add r0, r0 + 173c: 11 f4 brne .+4 ; 0x1742 <__fp_round+0xc> + 173e: 88 23 and r24, r24 + 1740: 52 f0 brmi .+20 ; 0x1756 <__fp_round+0x20> + 1742: bb 0f add r27, r27 + 1744: 40 f4 brcc .+16 ; 0x1756 <__fp_round+0x20> + 1746: bf 2b or r27, r31 + 1748: 11 f4 brne .+4 ; 0x174e <__fp_round+0x18> + 174a: 60 ff sbrs r22, 0 + 174c: 04 c0 rjmp .+8 ; 0x1756 <__fp_round+0x20> + 174e: 6f 5f subi r22, 0xFF ; 255 + 1750: 7f 4f sbci r23, 0xFF ; 255 + 1752: 8f 4f sbci r24, 0xFF ; 255 + 1754: 9f 4f sbci r25, 0xFF ; 255 + 1756: 08 95 ret + +00001758 <__fp_split3>: + 1758: 57 fd sbrc r21, 7 + 175a: 90 58 subi r25, 0x80 ; 128 + 175c: 44 0f add r20, r20 + 175e: 55 1f adc r21, r21 + 1760: 59 f0 breq .+22 ; 0x1778 <__fp_splitA+0x10> + 1762: 5f 3f cpi r21, 0xFF ; 255 + 1764: 71 f0 breq .+28 ; 0x1782 <__fp_splitA+0x1a> + 1766: 47 95 ror r20 + +00001768 <__fp_splitA>: + 1768: 88 0f add r24, r24 + 176a: 97 fb bst r25, 7 + 176c: 99 1f adc r25, r25 + 176e: 61 f0 breq .+24 ; 0x1788 <__fp_splitA+0x20> + 1770: 9f 3f cpi r25, 0xFF ; 255 + 1772: 79 f0 breq .+30 ; 0x1792 <__fp_splitA+0x2a> + 1774: 87 95 ror r24 1776: 08 95 ret - -00001778 <__fp_pscA>: - 1778: 00 24 eor r0, r0 - 177a: 0a 94 dec r0 - 177c: 16 16 cp r1, r22 - 177e: 17 06 cpc r1, r23 - 1780: 18 06 cpc r1, r24 - 1782: 09 06 cpc r0, r25 - 1784: 08 95 ret - -00001786 <__fp_pscB>: - 1786: 00 24 eor r0, r0 - 1788: 0a 94 dec r0 - 178a: 12 16 cp r1, r18 - 178c: 13 06 cpc r1, r19 - 178e: 14 06 cpc r1, r20 - 1790: 05 06 cpc r0, r21 - 1792: 08 95 ret - -00001794 <__fp_round>: - 1794: 09 2e mov r0, r25 - 1796: 03 94 inc r0 - 1798: 00 0c add r0, r0 - 179a: 11 f4 brne .+4 ; 0x17a0 <__fp_round+0xc> - 179c: 88 23 and r24, r24 - 179e: 52 f0 brmi .+20 ; 0x17b4 <__fp_round+0x20> - 17a0: bb 0f add r27, r27 - 17a2: 40 f4 brcc .+16 ; 0x17b4 <__fp_round+0x20> - 17a4: bf 2b or r27, r31 - 17a6: 11 f4 brne .+4 ; 0x17ac <__fp_round+0x18> - 17a8: 60 ff sbrs r22, 0 - 17aa: 04 c0 rjmp .+8 ; 0x17b4 <__fp_round+0x20> - 17ac: 6f 5f subi r22, 0xFF ; 255 - 17ae: 7f 4f sbci r23, 0xFF ; 255 - 17b0: 8f 4f sbci r24, 0xFF ; 255 - 17b2: 9f 4f sbci r25, 0xFF ; 255 - 17b4: 08 95 ret - -000017b6 <__fp_split3>: - 17b6: 57 fd sbrc r21, 7 - 17b8: 90 58 subi r25, 0x80 ; 128 - 17ba: 44 0f add r20, r20 - 17bc: 55 1f adc r21, r21 - 17be: 59 f0 breq .+22 ; 0x17d6 <__fp_splitA+0x10> - 17c0: 5f 3f cpi r21, 0xFF ; 255 - 17c2: 71 f0 breq .+28 ; 0x17e0 <__fp_splitA+0x1a> - 17c4: 47 95 ror r20 - -000017c6 <__fp_splitA>: - 17c6: 88 0f add r24, r24 - 17c8: 97 fb bst r25, 7 - 17ca: 99 1f adc r25, r25 - 17cc: 61 f0 breq .+24 ; 0x17e6 <__fp_splitA+0x20> - 17ce: 9f 3f cpi r25, 0xFF ; 255 - 17d0: 79 f0 breq .+30 ; 0x17f0 <__fp_splitA+0x2a> - 17d2: 87 95 ror r24 - 17d4: 08 95 ret - 17d6: 12 16 cp r1, r18 - 17d8: 13 06 cpc r1, r19 - 17da: 14 06 cpc r1, r20 - 17dc: 55 1f adc r21, r21 - 17de: f2 cf rjmp .-28 ; 0x17c4 <__fp_split3+0xe> - 17e0: 46 95 lsr r20 - 17e2: f1 df rcall .-30 ; 0x17c6 <__fp_splitA> - 17e4: 08 c0 rjmp .+16 ; 0x17f6 <__fp_splitA+0x30> - 17e6: 16 16 cp r1, r22 - 17e8: 17 06 cpc r1, r23 - 17ea: 18 06 cpc r1, r24 - 17ec: 99 1f adc r25, r25 - 17ee: f1 cf rjmp .-30 ; 0x17d2 <__fp_splitA+0xc> - 17f0: 86 95 lsr r24 - 17f2: 71 05 cpc r23, r1 - 17f4: 61 05 cpc r22, r1 - 17f6: 08 94 sec - 17f8: 08 95 ret - -000017fa <__fp_zero>: - 17fa: e8 94 clt - -000017fc <__fp_szero>: - 17fc: bb 27 eor r27, r27 - 17fe: 66 27 eor r22, r22 - 1800: 77 27 eor r23, r23 - 1802: cb 01 movw r24, r22 - 1804: 97 f9 bld r25, 7 - 1806: 08 95 ret - -00001808 <__gesf2>: - 1808: 8a df rcall .-236 ; 0x171e <__fp_cmp> - 180a: 08 f4 brcc .+2 ; 0x180e <__gesf2+0x6> - 180c: 8f ef ldi r24, 0xFF ; 255 - 180e: 08 95 ret - -00001810 <__udivmodsi4>: - 1810: a1 e2 ldi r26, 0x21 ; 33 - 1812: 1a 2e mov r1, r26 - 1814: aa 1b sub r26, r26 - 1816: bb 1b sub r27, r27 - 1818: fd 01 movw r30, r26 - 181a: 0d c0 rjmp .+26 ; 0x1836 <__udivmodsi4_ep> - -0000181c <__udivmodsi4_loop>: - 181c: aa 1f adc r26, r26 - 181e: bb 1f adc r27, r27 - 1820: ee 1f adc r30, r30 - 1822: ff 1f adc r31, r31 - 1824: a2 17 cp r26, r18 - 1826: b3 07 cpc r27, r19 - 1828: e4 07 cpc r30, r20 - 182a: f5 07 cpc r31, r21 - 182c: 20 f0 brcs .+8 ; 0x1836 <__udivmodsi4_ep> - 182e: a2 1b sub r26, r18 - 1830: b3 0b sbc r27, r19 - 1832: e4 0b sbc r30, r20 - 1834: f5 0b sbc r31, r21 - -00001836 <__udivmodsi4_ep>: - 1836: 66 1f adc r22, r22 - 1838: 77 1f adc r23, r23 - 183a: 88 1f adc r24, r24 - 183c: 99 1f adc r25, r25 - 183e: 1a 94 dec r1 - 1840: 69 f7 brne .-38 ; 0x181c <__udivmodsi4_loop> - 1842: 60 95 com r22 - 1844: 70 95 com r23 - 1846: 80 95 com r24 - 1848: 90 95 com r25 - 184a: 9b 01 movw r18, r22 - 184c: ac 01 movw r20, r24 - 184e: bd 01 movw r22, r26 - 1850: cf 01 movw r24, r30 - 1852: 08 95 ret - -00001854 <_exit>: - 1854: f8 94 cli - -00001856 <__stop_program>: - 1856: ff cf rjmp .-2 ; 0x1856 <__stop_program> + 1778: 12 16 cp r1, r18 + 177a: 13 06 cpc r1, r19 + 177c: 14 06 cpc r1, r20 + 177e: 55 1f adc r21, r21 + 1780: f2 cf rjmp .-28 ; 0x1766 <__fp_split3+0xe> + 1782: 46 95 lsr r20 + 1784: f1 df rcall .-30 ; 0x1768 <__fp_splitA> + 1786: 08 c0 rjmp .+16 ; 0x1798 <__fp_splitA+0x30> + 1788: 16 16 cp r1, r22 + 178a: 17 06 cpc r1, r23 + 178c: 18 06 cpc r1, r24 + 178e: 99 1f adc r25, r25 + 1790: f1 cf rjmp .-30 ; 0x1774 <__fp_splitA+0xc> + 1792: 86 95 lsr r24 + 1794: 71 05 cpc r23, r1 + 1796: 61 05 cpc r22, r1 + 1798: 08 94 sec + 179a: 08 95 ret + +0000179c <__fp_zero>: + 179c: e8 94 clt + +0000179e <__fp_szero>: + 179e: bb 27 eor r27, r27 + 17a0: 66 27 eor r22, r22 + 17a2: 77 27 eor r23, r23 + 17a4: cb 01 movw r24, r22 + 17a6: 97 f9 bld r25, 7 + 17a8: 08 95 ret + +000017aa <__gesf2>: + 17aa: 8a df rcall .-236 ; 0x16c0 <__fp_cmp> + 17ac: 08 f4 brcc .+2 ; 0x17b0 <__gesf2+0x6> + 17ae: 8f ef ldi r24, 0xFF ; 255 + 17b0: 08 95 ret + +000017b2 <__udivmodsi4>: + 17b2: a1 e2 ldi r26, 0x21 ; 33 + 17b4: 1a 2e mov r1, r26 + 17b6: aa 1b sub r26, r26 + 17b8: bb 1b sub r27, r27 + 17ba: fd 01 movw r30, r26 + 17bc: 0d c0 rjmp .+26 ; 0x17d8 <__udivmodsi4_ep> + +000017be <__udivmodsi4_loop>: + 17be: aa 1f adc r26, r26 + 17c0: bb 1f adc r27, r27 + 17c2: ee 1f adc r30, r30 + 17c4: ff 1f adc r31, r31 + 17c6: a2 17 cp r26, r18 + 17c8: b3 07 cpc r27, r19 + 17ca: e4 07 cpc r30, r20 + 17cc: f5 07 cpc r31, r21 + 17ce: 20 f0 brcs .+8 ; 0x17d8 <__udivmodsi4_ep> + 17d0: a2 1b sub r26, r18 + 17d2: b3 0b sbc r27, r19 + 17d4: e4 0b sbc r30, r20 + 17d6: f5 0b sbc r31, r21 + +000017d8 <__udivmodsi4_ep>: + 17d8: 66 1f adc r22, r22 + 17da: 77 1f adc r23, r23 + 17dc: 88 1f adc r24, r24 + 17de: 99 1f adc r25, r25 + 17e0: 1a 94 dec r1 + 17e2: 69 f7 brne .-38 ; 0x17be <__udivmodsi4_loop> + 17e4: 60 95 com r22 + 17e6: 70 95 com r23 + 17e8: 80 95 com r24 + 17ea: 90 95 com r25 + 17ec: 9b 01 movw r18, r22 + 17ee: ac 01 movw r20, r24 + 17f0: bd 01 movw r22, r26 + 17f2: cf 01 movw r24, r30 + 17f4: 08 95 ret + +000017f6 <_exit>: + 17f6: f8 94 cli + +000017f8 <__stop_program>: + 17f8: ff cf rjmp .-2 ; 0x17f8 <__stop_program> diff --git a/firmware/USBtoSerial.map b/firmware/USBtoSerial.map index 90781a6..19b7efe 100644 --- a/firmware/USBtoSerial.map +++ b/firmware/USBtoSerial.map @@ -62,6 +62,7 @@ Common symbol size file adb_werte 0x9 USBtoSerial.o USB_IsInitialized 0x1 ../../LUFA/Drivers/USB/Core/USBTask.o +USB_DeviceState 0x1 ../../LUFA/Drivers/USB/Core/USBTask.o USB_Device_ConfigurationNumber 0x1 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o USB_Device_CurrentlySelfPowered @@ -112,41 +113,41 @@ Discarded input sections .text.Endpoint_Null_Stream 0x0000000000000000 0x8e ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o .text.Endpoint_Write_Stream_LE - 0x0000000000000000 0xbe ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o + 0x0000000000000000 0xc2 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o .text.Endpoint_Write_Stream_BE - 0x0000000000000000 0xae ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o + 0x0000000000000000 0xb2 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o .text.Endpoint_Read_Stream_LE - 0x0000000000000000 0xbe ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o + 0x0000000000000000 0xc2 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o .text.Endpoint_Read_Stream_BE - 0x0000000000000000 0xae ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o + 0x0000000000000000 0xb2 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o .text.Endpoint_Write_PStream_LE - 0x0000000000000000 0xc2 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o + 0x0000000000000000 0xc8 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o .text.Endpoint_Write_PStream_BE - 0x0000000000000000 0xae ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o + 0x0000000000000000 0xb4 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o .text.Endpoint_Write_EStream_LE - 0x0000000000000000 0xc4 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o + 0x0000000000000000 0xc8 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o .text.Endpoint_Write_EStream_BE - 0x0000000000000000 0xb0 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o + 0x0000000000000000 0xb4 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o .text.Endpoint_Read_EStream_LE - 0x0000000000000000 0xc2 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o + 0x0000000000000000 0xc6 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o .text.Endpoint_Read_EStream_BE - 0x0000000000000000 0xb2 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o - .text.Endpoint_Write_Control_Stream_BE 0x0000000000000000 0xb8 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o + .text.Endpoint_Write_Control_Stream_BE + 0x0000000000000000 0xbe ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o .text.Endpoint_Read_Control_Stream_LE - 0x0000000000000000 0x78 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o + 0x0000000000000000 0x7c ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o .text.Endpoint_Read_Control_Stream_BE - 0x0000000000000000 0x7a ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o + 0x0000000000000000 0x7e ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o .text.Endpoint_Write_Control_PStream_BE - 0x0000000000000000 0xba ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o + 0x0000000000000000 0xbe ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o .text.Endpoint_Write_Control_EStream_LE - 0x0000000000000000 0xcc ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o + 0x0000000000000000 0xd4 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o .text.Endpoint_Write_Control_EStream_BE - 0x0000000000000000 0xda ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o + 0x0000000000000000 0xde ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o .text.Endpoint_Read_Control_EStream_LE - 0x0000000000000000 0x84 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o + 0x0000000000000000 0x88 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o .text.Endpoint_Read_Control_EStream_BE - 0x0000000000000000 0x8a ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o + 0x0000000000000000 0x8e ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o .text 0x0000000000000000 0x0 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o .data 0x0000000000000000 0x0 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o .bss 0x0000000000000000 0x0 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o @@ -205,19 +206,19 @@ Discarded input sections .data 0x0000000000000000 0x8 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o .bss 0x0000000000000000 0x0 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o .text.CDC_Device_SendString - 0x0000000000000000 0x46 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o + 0x0000000000000000 0x48 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o .text.CDC_Device_SendData - 0x0000000000000000 0x38 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o + 0x0000000000000000 0x3a ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o .text.CDC_Device_putchar 0x0000000000000000 0x20 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o .text.CDC_Device_BytesReceived - 0x0000000000000000 0x4e ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o + 0x0000000000000000 0x50 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o .text.CDC_Device_getchar_Blocking - 0x0000000000000000 0x36 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o + 0x0000000000000000 0x38 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o .text.CDC_Device_getchar 0x0000000000000000 0x18 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o .text.CDC_Device_SendControlLineStateChange - 0x0000000000000000 0x8c ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o + 0x0000000000000000 0x8e ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o .text.CDC_Device_CreateStream 0x0000000000000000 0x26 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o .text.CDC_Device_CreateBlockingStream @@ -230,7 +231,7 @@ Discarded input sections .text.HID_Device_ConfigureEndpoints 0x0000000000000000 0x34 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o .text.HID_Device_USBTask - 0x0000000000000000 0x1a0 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o + 0x0000000000000000 0x1a2 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o .text 0x0000000000000000 0x0 ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o .data 0x0000000000000000 0x0 ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o .bss 0x0000000000000000 0x0 ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o @@ -239,20 +240,20 @@ Discarded input sections .text.MS_Device_ConfigureEndpoints 0x0000000000000000 0x3c ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o .text.MS_Device_USBTask - 0x0000000000000000 0x266 ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o + 0x0000000000000000 0x270 ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o .text 0x0000000000000000 0x0 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o .data 0x0000000000000000 0x0 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o .bss 0x0000000000000000 0x0 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o .text.MIDI_Device_ConfigureEndpoints 0x0000000000000000 0x30 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o .text.MIDI_Device_SendEventPacket - 0x0000000000000000 0x3a ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o + 0x0000000000000000 0x3c ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o .text.MIDI_Device_Flush - 0x0000000000000000 0x30 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o + 0x0000000000000000 0x32 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o .text.MIDI_Device_USBTask - 0x0000000000000000 0x1e ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o + 0x0000000000000000 0x20 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o .text.MIDI_Device_ReceiveEventPacket - 0x0000000000000000 0x44 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o + 0x0000000000000000 0x46 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o .text 0x0000000000000000 0x0 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o .data 0x0000000000000000 0x8 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o .bss 0x0000000000000000 0x0 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o @@ -261,13 +262,13 @@ Discarded input sections .text.RNDIS_Device_ConfigureEndpoints 0x0000000000000000 0x4e ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o .text.RNDIS_Device_USBTask - 0x0000000000000000 0x86 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o + 0x0000000000000000 0x88 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o .text.RNDIS_Device_IsPacketReceived - 0x0000000000000000 0x2e ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o + 0x0000000000000000 0x30 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o .text.RNDIS_Device_ReadPacket - 0x0000000000000000 0xbe ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o + 0x0000000000000000 0xc0 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o .text.RNDIS_Device_SendPacket - 0x0000000000000000 0xde ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o + 0x0000000000000000 0xe0 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o .progmem.data 0x0000000000000000 0x6c ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o .text 0x0000000000000000 0x0 ../../LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.o .data 0x0000000000000000 0x0 ../../LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.o @@ -539,7 +540,7 @@ LOAD /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a .rela.plt *(.rela.plt) -.text 0x0000000000000000 0x1858 +.text 0x0000000000000000 0x17fa *(.vectors) .vectors 0x0000000000000000 0x98 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o 0x0000000000000000 __vectors @@ -607,6 +608,7 @@ LOAD /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a 0x000000000000016e __vector_32 0x000000000000016e __vector_34 0x000000000000016e __vector_24 + 0x000000000000016e __vector_12 0x000000000000016e __bad_interrupt 0x000000000000016e __vector_6 0x000000000000016e __vector_31 @@ -699,150 +701,147 @@ LOAD /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a 0x0000000000000732 0x26 USBtoSerial.o 0x0000000000000732 uart_puts .text.my_uitoa - 0x0000000000000758 0xd0 USBtoSerial.o + 0x0000000000000758 0xcc USBtoSerial.o 0x0000000000000758 my_uitoa - .text.main 0x0000000000000828 0x100 USBtoSerial.o - 0x0000000000000828 main + .text.main 0x0000000000000824 0x100 USBtoSerial.o + 0x0000000000000824 main .text.CALLBACK_USB_GetDescriptor - 0x0000000000000928 0x5a Descriptors.o - 0x0000000000000928 CALLBACK_USB_GetDescriptor + 0x0000000000000924 0x5a Descriptors.o + 0x0000000000000924 CALLBACK_USB_GetDescriptor .text.Endpoint_Write_Control_Stream_LE - 0x0000000000000982 0xb4 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o - 0x0000000000000982 Endpoint_Write_Control_Stream_LE + 0x000000000000097e 0xb8 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o + 0x000000000000097e Endpoint_Write_Control_Stream_LE .text.Endpoint_Write_Control_PStream_LE - 0x0000000000000a36 0xb6 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o + 0x0000000000000a36 0xba ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o 0x0000000000000a36 Endpoint_Write_Control_PStream_LE .text.Endpoint_ConfigureEndpoint_Prv - 0x0000000000000aec 0x6e ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o - 0x0000000000000aec Endpoint_ConfigureEndpoint_Prv + 0x0000000000000af0 0x6e ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o + 0x0000000000000af0 Endpoint_ConfigureEndpoint_Prv .text.Endpoint_ConfigureEndpointTable - 0x0000000000000b5a 0x88 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o - 0x0000000000000b5a Endpoint_ConfigureEndpointTable + 0x0000000000000b5e 0x88 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o + 0x0000000000000b5e Endpoint_ConfigureEndpointTable .text.Endpoint_ClearStatusStage - 0x0000000000000be2 0x3e ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o - 0x0000000000000be2 Endpoint_ClearStatusStage + 0x0000000000000be6 0x42 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o + 0x0000000000000be6 Endpoint_ClearStatusStage .text.Endpoint_WaitUntilReady - 0x0000000000000c20 0x66 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o - 0x0000000000000c20 Endpoint_WaitUntilReady + 0x0000000000000c28 0x68 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o + 0x0000000000000c28 Endpoint_WaitUntilReady .text.USB_ResetInterface - 0x0000000000000c86 0x70 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o - 0x0000000000000c86 USB_ResetInterface + 0x0000000000000c90 0x72 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o + 0x0000000000000c90 USB_ResetInterface .text.USB_Init - 0x0000000000000cf6 0x12 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o - 0x0000000000000cf6 USB_Init + 0x0000000000000d02 0x12 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o + 0x0000000000000d02 USB_Init .text.USB_INT_DisableAllInterrupts - 0x0000000000000d08 0x6 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o - 0x0000000000000d08 USB_INT_DisableAllInterrupts + 0x0000000000000d14 0x6 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o + 0x0000000000000d14 USB_INT_DisableAllInterrupts .text.USB_INT_ClearAllInterrupts - 0x0000000000000d0e 0x6 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o - 0x0000000000000d0e USB_INT_ClearAllInterrupts + 0x0000000000000d1a 0x6 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o + 0x0000000000000d1a USB_INT_ClearAllInterrupts .text.__vector_11 - 0x0000000000000d14 0x148 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o - 0x0000000000000d14 __vector_11 - .text.__vector_12 - 0x0000000000000e5c 0x76 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o - 0x0000000000000e5c __vector_12 + 0x0000000000000d20 0x144 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o + 0x0000000000000d20 __vector_11 .text.USB_Device_ProcessControlRequest - 0x0000000000000ed2 0x2c2 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o - 0x0000000000000ed2 USB_Device_ProcessControlRequest + 0x0000000000000e64 0x2c6 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o + 0x0000000000000e64 USB_Device_ProcessControlRequest .text.USB_Event_Stub - 0x0000000000001194 0x2 ../../LUFA/Drivers/USB/Core/Events.o - 0x0000000000001194 EVENT_USB_Device_WakeUp - 0x0000000000001194 USB_Event_Stub - 0x0000000000001194 EVENT_USB_Device_Suspend - 0x0000000000001194 EVENT_USB_Device_StartOfFrame - 0x0000000000001194 EVENT_USB_Device_Reset + 0x000000000000112a 0x2 ../../LUFA/Drivers/USB/Core/Events.o + 0x000000000000112a EVENT_USB_Device_WakeUp + 0x000000000000112a USB_Event_Stub + 0x000000000000112a EVENT_USB_Device_Suspend + 0x000000000000112a EVENT_USB_Device_StartOfFrame + 0x000000000000112a EVENT_USB_Device_Reset .text.USB_USBTask - 0x0000000000001196 0x36 ../../LUFA/Drivers/USB/Core/USBTask.o - 0x0000000000001196 USB_USBTask + 0x000000000000112c 0x38 ../../LUFA/Drivers/USB/Core/USBTask.o + 0x000000000000112c USB_USBTask .text.CDC_Device_ProcessControlRequest - 0x00000000000011cc 0x158 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o - 0x00000000000011cc CDC_Device_ProcessControlRequest + 0x0000000000001164 0x15a ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o + 0x0000000000001164 CDC_Device_ProcessControlRequest .text.CDC_Device_ConfigureEndpoints - 0x0000000000001324 0x48 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o - 0x0000000000001324 CDC_Device_ConfigureEndpoints + 0x00000000000012be 0x48 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o + 0x00000000000012be CDC_Device_ConfigureEndpoints .text.CDC_Device_SendByte - 0x000000000000136c 0x5a ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o - 0x000000000000136c CDC_Device_SendByte + 0x0000000000001306 0x5c ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o + 0x0000000000001306 CDC_Device_SendByte .text.CDC_Device_Flush - 0x00000000000013c6 0x5a ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o - 0x00000000000013c6 CDC_Device_Flush + 0x0000000000001362 0x5c ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o + 0x0000000000001362 CDC_Device_Flush .text.CDC_Device_USBTask - 0x0000000000001420 0x2e ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o - 0x0000000000001420 CDC_Device_USBTask + 0x00000000000013be 0x30 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o + 0x00000000000013be CDC_Device_USBTask .text.CDC_Device_ReceiveByte - 0x000000000000144e 0x5a ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o - 0x000000000000144e CDC_Device_ReceiveByte + 0x00000000000013ee 0x5c ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o + 0x00000000000013ee CDC_Device_ReceiveByte .text.CDC_Device_Event_Stub - 0x00000000000014a8 0x2 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o - 0x00000000000014a8 EVENT_CDC_Device_ControLineStateChanged - 0x00000000000014a8 EVENT_CDC_Device_BreakSent - 0x00000000000014a8 CDC_Device_Event_Stub + 0x000000000000144a 0x2 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o + 0x000000000000144a EVENT_CDC_Device_ControLineStateChanged + 0x000000000000144a EVENT_CDC_Device_BreakSent + 0x000000000000144a CDC_Device_Event_Stub .text.avr-libc.fplib - 0x00000000000014aa 0xa /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(addsf3.o) - 0x00000000000014aa __subsf3 - 0x00000000000014ac __addsf3 + 0x000000000000144c 0xa /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(addsf3.o) + 0x000000000000144c __subsf3 + 0x000000000000144e __addsf3 .text.avr-libc.fplib - 0x00000000000014b4 0xc0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(addsf3x.o) - 0x00000000000014ce __addsf3x + 0x0000000000001456 0xc0 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(addsf3x.o) + 0x0000000000001470 __addsf3x .text.avr-libc.fplib - 0x0000000000001574 0x8 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(cmpsf2.o) - 0x0000000000001574 __lesf2 - 0x0000000000001574 __nesf2 - 0x0000000000001574 __eqsf2 - 0x0000000000001574 __cmpsf2 - 0x0000000000001574 __ltsf2 + 0x0000000000001516 0x8 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(cmpsf2.o) + 0x0000000000001516 __lesf2 + 0x0000000000001516 __nesf2 + 0x0000000000001516 __eqsf2 + 0x0000000000001516 __cmpsf2 + 0x0000000000001516 __ltsf2 .text.avr-libc.fplib - 0x000000000000157c 0x4 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(divsf3.o) - 0x000000000000157c __divsf3 + 0x000000000000151e 0x4 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(divsf3.o) + 0x000000000000151e __divsf3 .text.avr-libc.fplib - 0x0000000000001580 0xcc /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(divsf3x.o) - 0x0000000000001596 __divsf3x - 0x000000000000159a __divsf3_pse + 0x0000000000001522 0xcc /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(divsf3x.o) + 0x0000000000001538 __divsf3x + 0x000000000000153c __divsf3_pse .text.avr-libc.fplib - 0x000000000000164c 0x58 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fixunssfsi.o) - 0x000000000000164c __fixunssfsi + 0x00000000000015ee 0x58 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fixunssfsi.o) + 0x00000000000015ee __fixunssfsi .text.avr-libc.fplib - 0x00000000000016a4 0x7a /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(floatsisf.o) - 0x00000000000016a4 __floatunsisf - 0x00000000000016a8 __floatsisf + 0x0000000000001646 0x7a /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(floatsisf.o) + 0x0000000000001646 __floatunsisf + 0x000000000000164a __floatsisf .text.avr-libc.fplib - 0x000000000000171e 0x48 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_cmp.o) - 0x000000000000171e __fp_cmp + 0x00000000000016c0 0x48 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_cmp.o) + 0x00000000000016c0 __fp_cmp .text.avr-libc.fplib - 0x0000000000001766 0xc /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_inf.o) - 0x0000000000001766 __fp_inf + 0x0000000000001708 0xc /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_inf.o) + 0x0000000000001708 __fp_inf .text.avr-libc.fplib - 0x0000000000001772 0x6 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_nan.o) - 0x0000000000001772 __fp_nan + 0x0000000000001714 0x6 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_nan.o) + 0x0000000000001714 __fp_nan .text.avr-libc.fplib - 0x0000000000001778 0xe /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_pscA.o) - 0x0000000000001778 __fp_pscA + 0x000000000000171a 0xe /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_pscA.o) + 0x000000000000171a __fp_pscA .text.avr-libc.fplib - 0x0000000000001786 0xe /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_pscB.o) - 0x0000000000001786 __fp_pscB + 0x0000000000001728 0xe /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_pscB.o) + 0x0000000000001728 __fp_pscB .text.avr-libc.fplib - 0x0000000000001794 0x22 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_round.o) - 0x0000000000001794 __fp_round + 0x0000000000001736 0x22 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_round.o) + 0x0000000000001736 __fp_round .text.avr-libc.fplib - 0x00000000000017b6 0x44 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_split3.o) - 0x00000000000017b6 __fp_split3 - 0x00000000000017c6 __fp_splitA + 0x0000000000001758 0x44 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_split3.o) + 0x0000000000001758 __fp_split3 + 0x0000000000001768 __fp_splitA .text.avr-libc.fplib - 0x00000000000017fa 0xe /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_zero.o) - 0x00000000000017fa __fp_zero - 0x00000000000017fc __fp_szero + 0x000000000000179c 0xe /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(fp_zero.o) + 0x000000000000179c __fp_zero + 0x000000000000179e __fp_szero .text.avr-libc.fplib - 0x0000000000001808 0x8 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(gesf2.o) - 0x0000000000001808 __gtsf2 - 0x0000000000001808 __gesf2 - .text.libgcc 0x0000000000001810 0x44 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_udivmodsi4.o) - 0x0000000000001810 __udivmodsi4 - 0x0000000000001854 . = ALIGN (0x2) + 0x00000000000017aa 0x8 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/libm.a(gesf2.o) + 0x00000000000017aa __gtsf2 + 0x00000000000017aa __gesf2 + .text.libgcc 0x00000000000017b2 0x44 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_udivmodsi4.o) + 0x00000000000017b2 __udivmodsi4 + 0x00000000000017f6 . = ALIGN (0x2) *(.fini9) - .fini9 0x0000000000001854 0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_exit.o) - 0x0000000000001854 exit - 0x0000000000001854 _exit + .fini9 0x00000000000017f6 0x0 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_exit.o) + 0x00000000000017f6 exit + 0x00000000000017f6 _exit *(.fini9) *(.fini8) *(.fini8) @@ -861,11 +860,11 @@ LOAD /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a *(.fini1) *(.fini1) *(.fini0) - .fini0 0x0000000000001854 0x4 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_exit.o) + .fini0 0x00000000000017f6 0x4 /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a(_exit.o) *(.fini0) - 0x0000000000001858 _etext = . + 0x00000000000017fa _etext = . -.data 0x0000000000800100 0x62 load address 0x0000000000001858 +.data 0x0000000000800100 0x62 load address 0x00000000000017fa 0x0000000000800100 PROVIDE (__data_start, .) *(.data) .data 0x0000000000800100 0x62 USBtoSerial.o @@ -878,7 +877,7 @@ LOAD /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a 0x0000000000800162 _edata = . 0x0000000000800162 PROVIDE (__data_end, .) -.bss 0x0000000000800162 0x134 +.bss 0x0000000000800162 0x135 0x0000000000800162 PROVIDE (__bss_start, .) *(.bss) .bss 0x0000000000800162 0x11d USBtoSerial.o @@ -892,19 +891,20 @@ LOAD /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a 0x000000000080028a USB_Device_ConfigurationNumber 0x000000000080028b USB_Device_CurrentlySelfPowered 0x000000000080028c USB_Device_RemoteWakeupEnabled - COMMON 0x000000000080028d 0x9 ../../LUFA/Drivers/USB/Core/USBTask.o + COMMON 0x000000000080028d 0xa ../../LUFA/Drivers/USB/Core/USBTask.o 0x000000000080028d USB_IsInitialized - 0x000000000080028e USB_ControlRequest - 0x0000000000800296 PROVIDE (__bss_end, .) - 0x0000000000001858 __data_load_start = LOADADDR (.data) - 0x00000000000018ba __data_load_end = (__data_load_start + SIZEOF (.data)) - -.noinit 0x0000000000800296 0x0 - 0x0000000000800296 PROVIDE (__noinit_start, .) + 0x000000000080028e USB_DeviceState + 0x000000000080028f USB_ControlRequest + 0x0000000000800297 PROVIDE (__bss_end, .) + 0x00000000000017fa __data_load_start = LOADADDR (.data) + 0x000000000000185c __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x0000000000800297 0x0 + 0x0000000000800297 PROVIDE (__noinit_start, .) *(.noinit*) - 0x0000000000800296 PROVIDE (__noinit_end, .) - 0x0000000000800296 _end = . - 0x0000000000800296 PROVIDE (__heap_start, .) + 0x0000000000800297 PROVIDE (__noinit_end, .) + 0x0000000000800297 _end = . + 0x0000000000800297 PROVIDE (__heap_start, .) .eeprom 0x0000000000810000 0x0 *(.eeprom*) @@ -1001,7 +1001,7 @@ LOAD /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a .debug_sfnames *(.debug_sfnames) -.debug_aranges 0x0000000000000000 0x538 +.debug_aranges 0x0000000000000000 0x530 *(.debug_aranges) .debug_aranges 0x0000000000000000 0x108 USBtoSerial.o @@ -1018,30 +1018,30 @@ LOAD /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a .debug_aranges 0x0000000000000288 0x30 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o .debug_aranges - 0x00000000000002b8 0x38 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o + 0x00000000000002b8 0x30 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o .debug_aranges - 0x00000000000002f0 0x38 ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o + 0x00000000000002e8 0x38 ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o .debug_aranges - 0x0000000000000328 0x20 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o + 0x0000000000000320 0x20 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o .debug_aranges - 0x0000000000000348 0x20 ../../LUFA/Drivers/USB/Core/Events.o + 0x0000000000000340 0x20 ../../LUFA/Drivers/USB/Core/Events.o .debug_aranges - 0x0000000000000368 0x20 ../../LUFA/Drivers/USB/Core/USBTask.o + 0x0000000000000360 0x20 ../../LUFA/Drivers/USB/Core/USBTask.o .debug_aranges - 0x0000000000000388 0x30 ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o + 0x0000000000000380 0x30 ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o .debug_aranges - 0x00000000000003b8 0x98 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o + 0x00000000000003b0 0x98 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o .debug_aranges - 0x0000000000000450 0x30 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o + 0x0000000000000448 0x30 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o .debug_aranges - 0x0000000000000480 0x30 ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o + 0x0000000000000478 0x30 ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o .debug_aranges - 0x00000000000004b0 0x40 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o + 0x00000000000004a8 0x40 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o .debug_aranges - 0x00000000000004f0 0x48 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o + 0x00000000000004e8 0x48 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o .debug_pubnames - 0x0000000000000000 0xe11 + 0x0000000000000000 0xe15 *(.debug_pubnames) .debug_pubnames 0x0000000000000000 0x276 USBtoSerial.o @@ -1058,132 +1058,132 @@ LOAD /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a .debug_pubnames 0x0000000000000752 0x46 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o .debug_pubnames - 0x0000000000000798 0x72 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o + 0x0000000000000798 0x62 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o .debug_pubnames - 0x000000000000080a 0x9b ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o + 0x00000000000007fa 0x9b ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o .debug_pubnames - 0x00000000000008a5 0xa1 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o + 0x0000000000000895 0xa1 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o .debug_pubnames - 0x0000000000000946 0x25 ../../LUFA/Drivers/USB/Core/Events.o + 0x0000000000000936 0x25 ../../LUFA/Drivers/USB/Core/Events.o .debug_pubnames - 0x000000000000096b 0x4f ../../LUFA/Drivers/USB/Core/USBTask.o + 0x000000000000095b 0x63 ../../LUFA/Drivers/USB/Core/USBTask.o .debug_pubnames - 0x00000000000009ba 0x79 ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o + 0x00000000000009be 0x79 ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o .debug_pubnames - 0x0000000000000a33 0x18b ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o + 0x0000000000000a37 0x18b ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o .debug_pubnames - 0x0000000000000bbe 0x70 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o + 0x0000000000000bc2 0x70 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o .debug_pubnames - 0x0000000000000c2e 0x6d ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o + 0x0000000000000c32 0x6d ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o .debug_pubnames - 0x0000000000000c9b 0xa6 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o + 0x0000000000000c9f 0xa6 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o .debug_pubnames - 0x0000000000000d41 0xd0 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o + 0x0000000000000d45 0xd0 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o -.debug_info 0x0000000000000000 0x8d6f +.debug_info 0x0000000000000000 0x8daf *(.debug_info) .debug_info 0x0000000000000000 0xfb1 USBtoSerial.o .debug_info 0x0000000000000fb1 0x77d Descriptors.o .debug_info 0x000000000000172e 0x6f9 ../../LUFA/Drivers/USB/Class/Common/HIDParser.o .debug_info 0x0000000000001e27 0xd8 ../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o - .debug_info 0x0000000000001eff 0x154c ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o - .debug_info 0x000000000000344b 0x603 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o - .debug_info 0x0000000000003a4e 0x6c ../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o - .debug_info 0x0000000000003aba 0x6c ../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o - .debug_info 0x0000000000003b26 0x6c ../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o - .debug_info 0x0000000000003b92 0x412 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o - .debug_info 0x0000000000003fa4 0x662 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o - .debug_info 0x0000000000004606 0x38c ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o - .debug_info 0x0000000000004992 0x973 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o - .debug_info 0x0000000000005305 0x85 ../../LUFA/Drivers/USB/Core/Events.o - .debug_info 0x000000000000538a 0x6c ../../LUFA/Drivers/USB/Core/HostStandardReq.o - .debug_info 0x00000000000053f6 0x245 ../../LUFA/Drivers/USB/Core/USBTask.o - .debug_info 0x000000000000563b 0x56c ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o - .debug_info 0x0000000000005ba7 0xc3b ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o - .debug_info 0x00000000000067e2 0x67a ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o - .debug_info 0x0000000000006e5c 0x7ca ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o - .debug_info 0x0000000000007626 0x4c1 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o - .debug_info 0x0000000000007ae7 0xebc ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o - .debug_info 0x00000000000089a3 0x6c ../../LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.o - .debug_info 0x0000000000008a0f 0x6c ../../LUFA/Drivers/USB/Class/Host/AudioClassHost.o - .debug_info 0x0000000000008a7b 0x6c ../../LUFA/Drivers/USB/Class/Host/CDCClassHost.o - .debug_info 0x0000000000008ae7 0x6c ../../LUFA/Drivers/USB/Class/Host/HIDClassHost.o - .debug_info 0x0000000000008b53 0x6c ../../LUFA/Drivers/USB/Class/Host/MassStorageClassHost.o - .debug_info 0x0000000000008bbf 0x6c ../../LUFA/Drivers/USB/Class/Host/MIDIClassHost.o - .debug_info 0x0000000000008c2b 0x6c ../../LUFA/Drivers/USB/Class/Host/PrinterClassHost.o - .debug_info 0x0000000000008c97 0x6c ../../LUFA/Drivers/USB/Class/Host/RNDISClassHost.o - .debug_info 0x0000000000008d03 0x6c ../../LUFA/Drivers/USB/Class/Host/StillImageClassHost.o + .debug_info 0x0000000000001eff 0x156b ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o + .debug_info 0x000000000000346a 0x622 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o + .debug_info 0x0000000000003a8c 0x6c ../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o + .debug_info 0x0000000000003af8 0x6c ../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o + .debug_info 0x0000000000003b64 0x6c ../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o + .debug_info 0x0000000000003bd0 0x431 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o + .debug_info 0x0000000000004001 0x548 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o + .debug_info 0x0000000000004549 0x38c ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o + .debug_info 0x00000000000048d5 0x992 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o + .debug_info 0x0000000000005267 0x85 ../../LUFA/Drivers/USB/Core/Events.o + .debug_info 0x00000000000052ec 0x6c ../../LUFA/Drivers/USB/Core/HostStandardReq.o + .debug_info 0x0000000000005358 0x269 ../../LUFA/Drivers/USB/Core/USBTask.o + .debug_info 0x00000000000055c1 0x58b ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o + .debug_info 0x0000000000005b4c 0xc5a ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o + .debug_info 0x00000000000067a6 0x699 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o + .debug_info 0x0000000000006e3f 0x7e9 ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o + .debug_info 0x0000000000007628 0x4e0 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o + .debug_info 0x0000000000007b08 0xedb ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o + .debug_info 0x00000000000089e3 0x6c ../../LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.o + .debug_info 0x0000000000008a4f 0x6c ../../LUFA/Drivers/USB/Class/Host/AudioClassHost.o + .debug_info 0x0000000000008abb 0x6c ../../LUFA/Drivers/USB/Class/Host/CDCClassHost.o + .debug_info 0x0000000000008b27 0x6c ../../LUFA/Drivers/USB/Class/Host/HIDClassHost.o + .debug_info 0x0000000000008b93 0x6c ../../LUFA/Drivers/USB/Class/Host/MassStorageClassHost.o + .debug_info 0x0000000000008bff 0x6c ../../LUFA/Drivers/USB/Class/Host/MIDIClassHost.o + .debug_info 0x0000000000008c6b 0x6c ../../LUFA/Drivers/USB/Class/Host/PrinterClassHost.o + .debug_info 0x0000000000008cd7 0x6c ../../LUFA/Drivers/USB/Class/Host/RNDISClassHost.o + .debug_info 0x0000000000008d43 0x6c ../../LUFA/Drivers/USB/Class/Host/StillImageClassHost.o *(.gnu.linkonce.wi.*) -.debug_abbrev 0x0000000000000000 0x21a4 +.debug_abbrev 0x0000000000000000 0x219a *(.debug_abbrev) .debug_abbrev 0x0000000000000000 0x41b USBtoSerial.o .debug_abbrev 0x000000000000041b 0x153 Descriptors.o .debug_abbrev 0x000000000000056e 0x1ec ../../LUFA/Drivers/USB/Class/Common/HIDParser.o .debug_abbrev 0x000000000000075a 0x7d ../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o - .debug_abbrev 0x00000000000007d7 0x18b ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o - .debug_abbrev 0x0000000000000962 0x1ee ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o - .debug_abbrev 0x0000000000000b50 0x2a ../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o - .debug_abbrev 0x0000000000000b7a 0x2a ../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o - .debug_abbrev 0x0000000000000ba4 0x2a ../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o - .debug_abbrev 0x0000000000000bce 0x14d ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o - .debug_abbrev 0x0000000000000d1b 0x1e2 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o - .debug_abbrev 0x0000000000000efd 0x148 ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o - .debug_abbrev 0x0000000000001045 0x20b ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o - .debug_abbrev 0x0000000000001250 0x41 ../../LUFA/Drivers/USB/Core/Events.o - .debug_abbrev 0x0000000000001291 0x2a ../../LUFA/Drivers/USB/Core/HostStandardReq.o - .debug_abbrev 0x00000000000012bb 0x14b ../../LUFA/Drivers/USB/Core/USBTask.o - .debug_abbrev 0x0000000000001406 0x160 ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o - .debug_abbrev 0x0000000000001566 0x2ec ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o - .debug_abbrev 0x0000000000001852 0x1b5 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o - .debug_abbrev 0x0000000000001a07 0x205 ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o - .debug_abbrev 0x0000000000001c0c 0x16c ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o - .debug_abbrev 0x0000000000001d78 0x2b2 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o - .debug_abbrev 0x000000000000202a 0x2a ../../LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.o - .debug_abbrev 0x0000000000002054 0x2a ../../LUFA/Drivers/USB/Class/Host/AudioClassHost.o - .debug_abbrev 0x000000000000207e 0x2a ../../LUFA/Drivers/USB/Class/Host/CDCClassHost.o - .debug_abbrev 0x00000000000020a8 0x2a ../../LUFA/Drivers/USB/Class/Host/HIDClassHost.o - .debug_abbrev 0x00000000000020d2 0x2a ../../LUFA/Drivers/USB/Class/Host/MassStorageClassHost.o - .debug_abbrev 0x00000000000020fc 0x2a ../../LUFA/Drivers/USB/Class/Host/MIDIClassHost.o - .debug_abbrev 0x0000000000002126 0x2a ../../LUFA/Drivers/USB/Class/Host/PrinterClassHost.o - .debug_abbrev 0x0000000000002150 0x2a ../../LUFA/Drivers/USB/Class/Host/RNDISClassHost.o - .debug_abbrev 0x000000000000217a 0x2a ../../LUFA/Drivers/USB/Class/Host/StillImageClassHost.o - -.debug_line 0x0000000000000000 0x7605 + .debug_abbrev 0x00000000000007d7 0x192 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o + .debug_abbrev 0x0000000000000969 0x1f5 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o + .debug_abbrev 0x0000000000000b5e 0x2a ../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o + .debug_abbrev 0x0000000000000b88 0x2a ../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o + .debug_abbrev 0x0000000000000bb2 0x2a ../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o + .debug_abbrev 0x0000000000000bdc 0x14d ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o + .debug_abbrev 0x0000000000000d29 0x17e ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o + .debug_abbrev 0x0000000000000ea7 0x148 ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o + .debug_abbrev 0x0000000000000fef 0x212 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o + .debug_abbrev 0x0000000000001201 0x41 ../../LUFA/Drivers/USB/Core/Events.o + .debug_abbrev 0x0000000000001242 0x2a ../../LUFA/Drivers/USB/Core/HostStandardReq.o + .debug_abbrev 0x000000000000126c 0x15c ../../LUFA/Drivers/USB/Core/USBTask.o + .debug_abbrev 0x00000000000013c8 0x167 ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o + .debug_abbrev 0x000000000000152f 0x2f3 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o + .debug_abbrev 0x0000000000001822 0x1bc ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o + .debug_abbrev 0x00000000000019de 0x205 ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o + .debug_abbrev 0x0000000000001be3 0x184 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o + .debug_abbrev 0x0000000000001d67 0x2b9 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o + .debug_abbrev 0x0000000000002020 0x2a ../../LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.o + .debug_abbrev 0x000000000000204a 0x2a ../../LUFA/Drivers/USB/Class/Host/AudioClassHost.o + .debug_abbrev 0x0000000000002074 0x2a ../../LUFA/Drivers/USB/Class/Host/CDCClassHost.o + .debug_abbrev 0x000000000000209e 0x2a ../../LUFA/Drivers/USB/Class/Host/HIDClassHost.o + .debug_abbrev 0x00000000000020c8 0x2a ../../LUFA/Drivers/USB/Class/Host/MassStorageClassHost.o + .debug_abbrev 0x00000000000020f2 0x2a ../../LUFA/Drivers/USB/Class/Host/MIDIClassHost.o + .debug_abbrev 0x000000000000211c 0x2a ../../LUFA/Drivers/USB/Class/Host/PrinterClassHost.o + .debug_abbrev 0x0000000000002146 0x2a ../../LUFA/Drivers/USB/Class/Host/RNDISClassHost.o + .debug_abbrev 0x0000000000002170 0x2a ../../LUFA/Drivers/USB/Class/Host/StillImageClassHost.o + +.debug_line 0x0000000000000000 0x77dd *(.debug_line) .debug_line 0x0000000000000000 0x1022 USBtoSerial.o .debug_line 0x0000000000001022 0x1d9 Descriptors.o - .debug_line 0x00000000000011fb 0x762 ../../LUFA/Drivers/USB/Class/Common/HIDParser.o - .debug_line 0x000000000000195d 0x15f ../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o - .debug_line 0x0000000000001abc 0x1a80 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o - .debug_line 0x000000000000353c 0x5a1 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o - .debug_line 0x0000000000003add 0x3e ../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o - .debug_line 0x0000000000003b1b 0x3e ../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o - .debug_line 0x0000000000003b59 0x3e ../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o - .debug_line 0x0000000000003b97 0x312 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o - .debug_line 0x0000000000003ea9 0x55a ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o - .debug_line 0x0000000000004403 0x269 ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o - .debug_line 0x000000000000466c 0x5a2 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o - .debug_line 0x0000000000004c0e 0x80 ../../LUFA/Drivers/USB/Core/Events.o - .debug_line 0x0000000000004c8e 0x3e ../../LUFA/Drivers/USB/Core/HostStandardReq.o - .debug_line 0x0000000000004ccc 0x1ae ../../LUFA/Drivers/USB/Core/USBTask.o - .debug_line 0x0000000000004e7a 0x4be ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o - .debug_line 0x0000000000005338 0x9c2 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o - .debug_line 0x0000000000005cfa 0x5c3 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o - .debug_line 0x00000000000062bd 0x5c6 ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o - .debug_line 0x0000000000006883 0x3bc ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o - .debug_line 0x0000000000006c3f 0x798 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o - .debug_line 0x00000000000073d7 0x3e ../../LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.o - .debug_line 0x0000000000007415 0x3e ../../LUFA/Drivers/USB/Class/Host/AudioClassHost.o - .debug_line 0x0000000000007453 0x3e ../../LUFA/Drivers/USB/Class/Host/CDCClassHost.o - .debug_line 0x0000000000007491 0x3e ../../LUFA/Drivers/USB/Class/Host/HIDClassHost.o - .debug_line 0x00000000000074cf 0x3e ../../LUFA/Drivers/USB/Class/Host/MassStorageClassHost.o - .debug_line 0x000000000000750d 0x3e ../../LUFA/Drivers/USB/Class/Host/MIDIClassHost.o - .debug_line 0x000000000000754b 0x3e ../../LUFA/Drivers/USB/Class/Host/PrinterClassHost.o - .debug_line 0x0000000000007589 0x3e ../../LUFA/Drivers/USB/Class/Host/RNDISClassHost.o - .debug_line 0x00000000000075c7 0x3e ../../LUFA/Drivers/USB/Class/Host/StillImageClassHost.o - -.debug_frame 0x0000000000000000 0x830 + .debug_line 0x00000000000011fb 0x768 ../../LUFA/Drivers/USB/Class/Common/HIDParser.o + .debug_line 0x0000000000001963 0x16b ../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o + .debug_line 0x0000000000001ace 0x1aee ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o + .debug_line 0x00000000000035bc 0x5fe ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o + .debug_line 0x0000000000003bba 0x3e ../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o + .debug_line 0x0000000000003bf8 0x3e ../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o + .debug_line 0x0000000000003c36 0x3e ../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o + .debug_line 0x0000000000003c74 0x323 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o + .debug_line 0x0000000000003f97 0x4a2 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o + .debug_line 0x0000000000004439 0x275 ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o + .debug_line 0x00000000000046ae 0x5ba ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o + .debug_line 0x0000000000004c68 0x86 ../../LUFA/Drivers/USB/Core/Events.o + .debug_line 0x0000000000004cee 0x3e ../../LUFA/Drivers/USB/Core/HostStandardReq.o + .debug_line 0x0000000000004d2c 0x1cd ../../LUFA/Drivers/USB/Core/USBTask.o + .debug_line 0x0000000000004ef9 0x515 ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o + .debug_line 0x000000000000540e 0x9e0 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o + .debug_line 0x0000000000005dee 0x5e1 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o + .debug_line 0x00000000000063cf 0x5f4 ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o + .debug_line 0x00000000000069c3 0x436 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o + .debug_line 0x0000000000006df9 0x7b6 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o + .debug_line 0x00000000000075af 0x3e ../../LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.o + .debug_line 0x00000000000075ed 0x3e ../../LUFA/Drivers/USB/Class/Host/AudioClassHost.o + .debug_line 0x000000000000762b 0x3e ../../LUFA/Drivers/USB/Class/Host/CDCClassHost.o + .debug_line 0x0000000000007669 0x3e ../../LUFA/Drivers/USB/Class/Host/HIDClassHost.o + .debug_line 0x00000000000076a7 0x3e ../../LUFA/Drivers/USB/Class/Host/MassStorageClassHost.o + .debug_line 0x00000000000076e5 0x3e ../../LUFA/Drivers/USB/Class/Host/MIDIClassHost.o + .debug_line 0x0000000000007723 0x3e ../../LUFA/Drivers/USB/Class/Host/PrinterClassHost.o + .debug_line 0x0000000000007761 0x3e ../../LUFA/Drivers/USB/Class/Host/RNDISClassHost.o + .debug_line 0x000000000000779f 0x3e ../../LUFA/Drivers/USB/Class/Host/StillImageClassHost.o + +.debug_frame 0x0000000000000000 0x820 *(.debug_frame) .debug_frame 0x0000000000000000 0x1f0 USBtoSerial.o .debug_frame 0x00000000000001f0 0x20 Descriptors.o @@ -1192,100 +1192,100 @@ LOAD /usr/lib/gcc/avr/4.5.3/avr35/libgcc.a .debug_frame 0x0000000000000280 0x170 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o .debug_frame 0x00000000000003f0 0x60 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o .debug_frame 0x0000000000000450 0x40 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o - .debug_frame 0x0000000000000490 0x50 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o - .debug_frame 0x00000000000004e0 0x50 ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o - .debug_frame 0x0000000000000530 0x20 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o - .debug_frame 0x0000000000000550 0x20 ../../LUFA/Drivers/USB/Core/Events.o - .debug_frame 0x0000000000000570 0x20 ../../LUFA/Drivers/USB/Core/USBTask.o - .debug_frame 0x0000000000000590 0x40 ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o - .debug_frame 0x00000000000005d0 0x110 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o - .debug_frame 0x00000000000006e0 0x40 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o - .debug_frame 0x0000000000000720 0x40 ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o - .debug_frame 0x0000000000000760 0x60 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o - .debug_frame 0x00000000000007c0 0x70 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o - -.debug_str 0x0000000000000000 0x3bf7 + .debug_frame 0x0000000000000490 0x40 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o + .debug_frame 0x00000000000004d0 0x50 ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o + .debug_frame 0x0000000000000520 0x20 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o + .debug_frame 0x0000000000000540 0x20 ../../LUFA/Drivers/USB/Core/Events.o + .debug_frame 0x0000000000000560 0x20 ../../LUFA/Drivers/USB/Core/USBTask.o + .debug_frame 0x0000000000000580 0x40 ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o + .debug_frame 0x00000000000005c0 0x110 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o + .debug_frame 0x00000000000006d0 0x40 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o + .debug_frame 0x0000000000000710 0x40 ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o + .debug_frame 0x0000000000000750 0x60 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o + .debug_frame 0x00000000000007b0 0x70 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o + +.debug_str 0x0000000000000000 0x3ce7 *(.debug_str) .debug_str 0x0000000000000000 0x939 USBtoSerial.o 0x9db (size before relaxing) .debug_str 0x0000000000000939 0x8ba Descriptors.o 0xa0a (size before relaxing) - .debug_str 0x00000000000011f3 0x47c ../../LUFA/Drivers/USB/Class/Common/HIDParser.o - 0x5ea (size before relaxing) - .debug_str 0x000000000000166f 0x77 ../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o - 0x14d (size before relaxing) - .debug_str 0x00000000000016e6 0x592 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o - 0x763 (size before relaxing) - .debug_str 0x0000000000001c78 0x212 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o - 0x55f (size before relaxing) - .debug_str 0x0000000000001e8a 0x2d ../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o - 0xf5 (size before relaxing) - .debug_str 0x0000000000001eb7 0x33 ../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o - 0xfb (size before relaxing) - .debug_str 0x0000000000001eea 0x2d ../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o - 0xf5 (size before relaxing) - .debug_str 0x0000000000001f17 0x209 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o - 0x41e (size before relaxing) - .debug_str 0x0000000000002120 0x113 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o - 0x420 (size before relaxing) - .debug_str 0x0000000000002233 0x227 ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o - 0x335 (size before relaxing) - .debug_str 0x000000000000245a 0x3b2 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o - 0x853 (size before relaxing) - .debug_str 0x000000000000280c 0x34 ../../LUFA/Drivers/USB/Core/Events.o - 0xfc (size before relaxing) - .debug_str 0x0000000000002840 0x2e ../../LUFA/Drivers/USB/Core/HostStandardReq.o - 0xf6 (size before relaxing) - .debug_str 0x000000000000286e 0x4e ../../LUFA/Drivers/USB/Core/USBTask.o - 0x2a3 (size before relaxing) - .debug_str 0x00000000000028bc 0x239 ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o - 0x523 (size before relaxing) - .debug_str 0x0000000000002af5 0x2fa ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o - 0x8d7 (size before relaxing) - .debug_str 0x0000000000002def 0x1ed ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o - 0x552 (size before relaxing) - .debug_str 0x0000000000002fdc 0x23d ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o - 0x6b3 (size before relaxing) - .debug_str 0x0000000000003219 0x118 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o - 0x53a (size before relaxing) - .debug_str 0x0000000000003331 0x6e8 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o - 0xbeb (size before relaxing) - .debug_str 0x0000000000003a19 0x3e ../../LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.o + .debug_str 0x00000000000011f3 0x4d5 ../../LUFA/Drivers/USB/Class/Common/HIDParser.o + 0x5fa (size before relaxing) + .debug_str 0x00000000000016c8 0x7d ../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o + 0x15d (size before relaxing) + .debug_str 0x0000000000001745 0x5a8 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o + 0x783 (size before relaxing) + .debug_str 0x0000000000001ced 0x218 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o + 0x57f (size before relaxing) + .debug_str 0x0000000000001f05 0x33 ../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o + 0x105 (size before relaxing) + .debug_str 0x0000000000001f38 0x39 ../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o + 0x10b (size before relaxing) + .debug_str 0x0000000000001f71 0x33 ../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o + 0x105 (size before relaxing) + .debug_str 0x0000000000001fa4 0x20f ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o + 0x43e (size before relaxing) + .debug_str 0x00000000000021b3 0xdc ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o + 0x3b7 (size before relaxing) + .debug_str 0x000000000000228f 0x22d ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o + 0x345 (size before relaxing) + .debug_str 0x00000000000024bc 0x3b8 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o + 0x873 (size before relaxing) + .debug_str 0x0000000000002874 0x3a ../../LUFA/Drivers/USB/Core/Events.o + 0x10c (size before relaxing) + .debug_str 0x00000000000028ae 0x34 ../../LUFA/Drivers/USB/Core/HostStandardReq.o 0x106 (size before relaxing) - .debug_str 0x0000000000003a57 0x33 ../../LUFA/Drivers/USB/Class/Host/AudioClassHost.o - 0xfb (size before relaxing) - .debug_str 0x0000000000003a8a 0x31 ../../LUFA/Drivers/USB/Class/Host/CDCClassHost.o - 0xf9 (size before relaxing) - .debug_str 0x0000000000003abb 0x31 ../../LUFA/Drivers/USB/Class/Host/HIDClassHost.o - 0xf9 (size before relaxing) - .debug_str 0x0000000000003aec 0x39 ../../LUFA/Drivers/USB/Class/Host/MassStorageClassHost.o - 0x101 (size before relaxing) - .debug_str 0x0000000000003b25 0x32 ../../LUFA/Drivers/USB/Class/Host/MIDIClassHost.o - 0xfa (size before relaxing) - .debug_str 0x0000000000003b57 0x35 ../../LUFA/Drivers/USB/Class/Host/PrinterClassHost.o - 0xfd (size before relaxing) - .debug_str 0x0000000000003b8c 0x33 ../../LUFA/Drivers/USB/Class/Host/RNDISClassHost.o - 0xfb (size before relaxing) - .debug_str 0x0000000000003bbf 0x38 ../../LUFA/Drivers/USB/Class/Host/StillImageClassHost.o - 0x100 (size before relaxing) - -.debug_loc 0x0000000000000000 0x4645 + .debug_str 0x00000000000028e2 0x70 ../../LUFA/Drivers/USB/Core/USBTask.o + 0x2c3 (size before relaxing) + .debug_str 0x0000000000002952 0x23f ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o + 0x543 (size before relaxing) + .debug_str 0x0000000000002b91 0x300 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o + 0x8f7 (size before relaxing) + .debug_str 0x0000000000002e91 0x1f3 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o + 0x572 (size before relaxing) + .debug_str 0x0000000000003084 0x243 ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o + 0x6d3 (size before relaxing) + .debug_str 0x00000000000032c7 0x11e ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o + 0x55a (size before relaxing) + .debug_str 0x00000000000033e5 0x6ee ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o + 0xc0b (size before relaxing) + .debug_str 0x0000000000003ad3 0x44 ../../LUFA/Drivers/USB/Class/Host/AndroidAccessoryClassHost.o + 0x116 (size before relaxing) + .debug_str 0x0000000000003b17 0x39 ../../LUFA/Drivers/USB/Class/Host/AudioClassHost.o + 0x10b (size before relaxing) + .debug_str 0x0000000000003b50 0x37 ../../LUFA/Drivers/USB/Class/Host/CDCClassHost.o + 0x109 (size before relaxing) + .debug_str 0x0000000000003b87 0x37 ../../LUFA/Drivers/USB/Class/Host/HIDClassHost.o + 0x109 (size before relaxing) + .debug_str 0x0000000000003bbe 0x3f ../../LUFA/Drivers/USB/Class/Host/MassStorageClassHost.o + 0x111 (size before relaxing) + .debug_str 0x0000000000003bfd 0x38 ../../LUFA/Drivers/USB/Class/Host/MIDIClassHost.o + 0x10a (size before relaxing) + .debug_str 0x0000000000003c35 0x3b ../../LUFA/Drivers/USB/Class/Host/PrinterClassHost.o + 0x10d (size before relaxing) + .debug_str 0x0000000000003c70 0x39 ../../LUFA/Drivers/USB/Class/Host/RNDISClassHost.o + 0x10b (size before relaxing) + .debug_str 0x0000000000003ca9 0x3e ../../LUFA/Drivers/USB/Class/Host/StillImageClassHost.o + 0x110 (size before relaxing) + +.debug_loc 0x0000000000000000 0x4631 *(.debug_loc) .debug_loc 0x0000000000000000 0x5a9 USBtoSerial.o .debug_loc 0x00000000000005a9 0xd3 Descriptors.o .debug_loc 0x000000000000067c 0x88f ../../LUFA/Drivers/USB/Class/Common/HIDParser.o .debug_loc 0x0000000000000f0b 0x1982 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o .debug_loc 0x000000000000288d 0x390 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o - .debug_loc 0x0000000000002c1d 0x190 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o - .debug_loc 0x0000000000002dad 0x2bc ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o - .debug_loc 0x0000000000003069 0x22a ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o - .debug_loc 0x0000000000003293 0x27 ../../LUFA/Drivers/USB/Core/USBTask.o - .debug_loc 0x00000000000032ba 0x16d ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o - .debug_loc 0x0000000000003427 0x52b ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o - .debug_loc 0x0000000000003952 0x249 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o - .debug_loc 0x0000000000003b9b 0x152 ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o - .debug_loc 0x0000000000003ced 0x1f6 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o - .debug_loc 0x0000000000003ee3 0x762 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o + .debug_loc 0x0000000000002c1d 0x17c ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o + .debug_loc 0x0000000000002d99 0x2bc ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o + .debug_loc 0x0000000000003055 0x22a ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o + .debug_loc 0x000000000000327f 0x27 ../../LUFA/Drivers/USB/Core/USBTask.o + .debug_loc 0x00000000000032a6 0x16d ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o + .debug_loc 0x0000000000003413 0x52b ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o + .debug_loc 0x000000000000393e 0x249 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o + .debug_loc 0x0000000000003b87 0x152 ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o + .debug_loc 0x0000000000003cd9 0x1f6 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o + .debug_loc 0x0000000000003ecf 0x762 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o .debug_macinfo *(.debug_macinfo) @@ -1357,7 +1357,7 @@ LOAD linker stubs .debug_pubtypes 0x00000000000010ff 0x12 ../../LUFA/Drivers/USB/Class/Host/StillImageClassHost.o -.debug_ranges 0x0000000000000000 0x790 +.debug_ranges 0x0000000000000000 0x788 .debug_ranges 0x0000000000000000 0xf8 USBtoSerial.o .debug_ranges 0x00000000000000f8 0x10 Descriptors.o .debug_ranges 0x0000000000000108 0x100 ../../LUFA/Drivers/USB/Class/Common/HIDParser.o @@ -1365,17 +1365,17 @@ LOAD linker stubs .debug_ranges 0x0000000000000218 0x298 ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o .debug_ranges 0x00000000000004b0 0xa8 ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o .debug_ranges 0x0000000000000558 0x20 ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o - .debug_ranges 0x0000000000000578 0x28 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o - .debug_ranges 0x00000000000005a0 0x28 ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o - .debug_ranges 0x00000000000005c8 0x10 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o - .debug_ranges 0x00000000000005d8 0x10 ../../LUFA/Drivers/USB/Core/Events.o - .debug_ranges 0x00000000000005e8 0x10 ../../LUFA/Drivers/USB/Core/USBTask.o - .debug_ranges 0x00000000000005f8 0x20 ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o - .debug_ranges 0x0000000000000618 0x88 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o - .debug_ranges 0x00000000000006a0 0x20 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o - .debug_ranges 0x00000000000006c0 0x20 ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o - .debug_ranges 0x00000000000006e0 0x30 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o - .debug_ranges 0x0000000000000710 0x80 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o + .debug_ranges 0x0000000000000578 0x20 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o + .debug_ranges 0x0000000000000598 0x28 ../../LUFA/Drivers/USB/Core/ConfigDescriptors.o + .debug_ranges 0x00000000000005c0 0x10 ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o + .debug_ranges 0x00000000000005d0 0x10 ../../LUFA/Drivers/USB/Core/Events.o + .debug_ranges 0x00000000000005e0 0x10 ../../LUFA/Drivers/USB/Core/USBTask.o + .debug_ranges 0x00000000000005f0 0x20 ../../LUFA/Drivers/USB/Class/Device/AudioClassDevice.o + .debug_ranges 0x0000000000000610 0x88 ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o + .debug_ranges 0x0000000000000698 0x20 ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o + .debug_ranges 0x00000000000006b8 0x20 ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o + .debug_ranges 0x00000000000006d8 0x30 ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o + .debug_ranges 0x0000000000000708 0x80 ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o Cross Reference Table @@ -1519,6 +1519,17 @@ USB_ControlRequest ../../LUFA/Drivers/USB/Class/D ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o +USB_DeviceState ../../LUFA/Drivers/USB/Class/Device/RNDISClassDevice.o + ../../LUFA/Drivers/USB/Class/Device/MIDIClassDevice.o + ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o + ../../LUFA/Drivers/USB/Class/Device/HIDClassDevice.o + ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o + ../../LUFA/Drivers/USB/Core/USBTask.o + ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o + ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o + ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o + ../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o + ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o USB_Device_ConfigurationNumber ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o @@ -1526,7 +1537,6 @@ USB_Device_CurrentlySelfPowered ../../LUFA/Drivers/USB/Core/De ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o USB_Device_ProcessControlRequest ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o ../../LUFA/Drivers/USB/Core/USBTask.o - ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o USB_Device_RemoteWakeupEnabled ../../LUFA/Drivers/USB/Core/DeviceStandardReq.o ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o USB_Device_SendRemoteWakeup ../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o @@ -1550,7 +1560,9 @@ USB_ProcessHIDReport ../../LUFA/Drivers/USB/Class/C USB_ResetInterface ../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o USB_SetHIDReportItemInfo ../../LUFA/Drivers/USB/Class/Common/HIDParser.o USB_USBTask ../../LUFA/Drivers/USB/Core/USBTask.o + ../../LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.o ../../LUFA/Drivers/USB/Class/Device/CDCClassDevice.o + ../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o USBtoSerial.o Usb2SerialTask USBtoSerial.o VirtualSerial_CDC_Interface USBtoSerial.o @@ -1639,8 +1651,7 @@ __vector_1 /usr/lib/gcc/avr/4.5.3/../../. __vector_10 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o __vector_11 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o -__vector_12 ../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o - /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o +__vector_12 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o __vector_13 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o __vector_14 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o __vector_15 /usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr35/crtm32u2.o diff --git a/firmware/USBtoSerial.sym b/firmware/USBtoSerial.sym index ce0cc01..b70739d 100644 --- a/firmware/USBtoSerial.sym +++ b/firmware/USBtoSerial.sym @@ -212,6 +212,7 @@ 0000016e T __bad_interrupt 0000016e W __vector_1 0000016e W __vector_10 +0000016e W __vector_12 0000016e W __vector_13 0000016e W __vector_14 0000016e W __vector_15 @@ -268,71 +269,70 @@ 00000722 T uart_putc 00000732 T uart_puts 00000758 T my_uitoa -00000828 T main -00000928 T CALLBACK_USB_GetDescriptor -00000982 T Endpoint_Write_Control_Stream_LE +00000824 T main +00000924 T CALLBACK_USB_GetDescriptor +0000097e T Endpoint_Write_Control_Stream_LE 00000a36 T Endpoint_Write_Control_PStream_LE -00000aec T Endpoint_ConfigureEndpoint_Prv -00000b5a T Endpoint_ConfigureEndpointTable -00000be2 T Endpoint_ClearStatusStage -00000c20 T Endpoint_WaitUntilReady -00000c86 T USB_ResetInterface -00000cf6 T USB_Init -00000d08 T USB_INT_DisableAllInterrupts -00000d0e T USB_INT_ClearAllInterrupts -00000d14 T __vector_11 -00000e5c T __vector_12 -00000ed2 T USB_Device_ProcessControlRequest -00001194 W EVENT_USB_Device_Reset -00001194 W EVENT_USB_Device_StartOfFrame -00001194 W EVENT_USB_Device_Suspend -00001194 W EVENT_USB_Device_WakeUp -00001194 T USB_Event_Stub -00001196 T USB_USBTask -000011cc T CDC_Device_ProcessControlRequest -00001324 T CDC_Device_ConfigureEndpoints -0000136c T CDC_Device_SendByte -000013c6 T CDC_Device_Flush -00001420 T CDC_Device_USBTask -0000144e T CDC_Device_ReceiveByte -000014a8 T CDC_Device_Event_Stub -000014a8 W EVENT_CDC_Device_BreakSent -000014a8 W EVENT_CDC_Device_ControLineStateChanged -000014aa T __subsf3 -000014ac T __addsf3 -000014ce T __addsf3x -00001574 T __cmpsf2 -00001574 T __eqsf2 -00001574 T __lesf2 -00001574 T __ltsf2 -00001574 T __nesf2 -0000157c T __divsf3 -00001596 T __divsf3x -0000159a T __divsf3_pse -0000164c T __fixunssfsi -000016a4 T __floatunsisf -000016a8 T __floatsisf -0000171e T __fp_cmp -00001766 T __fp_inf -00001772 T __fp_nan -00001778 T __fp_pscA -00001786 T __fp_pscB -00001794 T __fp_round -000017b6 T __fp_split3 -000017c6 T __fp_splitA -000017fa T __fp_zero -000017fc T __fp_szero -00001808 T __gesf2 -00001808 T __gtsf2 -00001810 T __udivmodsi4 -0000181c t __udivmodsi4_loop -00001836 t __udivmodsi4_ep -00001854 T _exit -00001854 W exit -00001856 t __stop_program -00001858 A __data_load_start -00001858 T _etext -000018ba A __data_load_end +00000af0 T Endpoint_ConfigureEndpoint_Prv +00000b5e T Endpoint_ConfigureEndpointTable +00000be6 T Endpoint_ClearStatusStage +00000c28 T Endpoint_WaitUntilReady +00000c90 T USB_ResetInterface +00000d02 T USB_Init +00000d14 T USB_INT_DisableAllInterrupts +00000d1a T USB_INT_ClearAllInterrupts +00000d20 T __vector_11 +00000e64 T USB_Device_ProcessControlRequest +0000112a W EVENT_USB_Device_Reset +0000112a W EVENT_USB_Device_StartOfFrame +0000112a W EVENT_USB_Device_Suspend +0000112a W EVENT_USB_Device_WakeUp +0000112a T USB_Event_Stub +0000112c T USB_USBTask +00001164 T CDC_Device_ProcessControlRequest +000012be T CDC_Device_ConfigureEndpoints +00001306 T CDC_Device_SendByte +00001362 T CDC_Device_Flush +000013be T CDC_Device_USBTask +000013ee T CDC_Device_ReceiveByte +0000144a T CDC_Device_Event_Stub +0000144a W EVENT_CDC_Device_BreakSent +0000144a W EVENT_CDC_Device_ControLineStateChanged +0000144c T __subsf3 +0000144e T __addsf3 +00001470 T __addsf3x +00001516 T __cmpsf2 +00001516 T __eqsf2 +00001516 T __lesf2 +00001516 T __ltsf2 +00001516 T __nesf2 +0000151e T __divsf3 +00001538 T __divsf3x +0000153c T __divsf3_pse +000015ee T __fixunssfsi +00001646 T __floatunsisf +0000164a T __floatsisf +000016c0 T __fp_cmp +00001708 T __fp_inf +00001714 T __fp_nan +0000171a T __fp_pscA +00001728 T __fp_pscB +00001736 T __fp_round +00001758 T __fp_split3 +00001768 T __fp_splitA +0000179c T __fp_zero +0000179e T __fp_szero +000017aa T __gesf2 +000017aa T __gtsf2 +000017b2 T __udivmodsi4 +000017be t __udivmodsi4_loop +000017d8 t __udivmodsi4_ep +000017f6 T _exit +000017f6 W exit +000017f8 t __stop_program +000017fa A __data_load_start +000017fa T _etext +0000185c A __data_load_end 00800100 D __data_start 00800145 D VirtualSerial_CDC_Interface 00800160 d CSWTCH.10 @@ -353,7 +353,8 @@ 0080028b B USB_Device_CurrentlySelfPowered 0080028c B USB_Device_RemoteWakeupEnabled 0080028d B USB_IsInitialized -0080028e B USB_ControlRequest -00800296 B __bss_end -00800296 N _end +0080028e B USB_DeviceState +0080028f B USB_ControlRequest +00800297 B __bss_end +00800297 N _end 00810000 N __eeprom_end -- 2.43.0