浏览代码

fw: irq wrapper, picorv32 custom instructions, _die() with blinkenlights

H. Peter Anvin 3 年之前
父节点
当前提交
0176e771d1
共有 13 个文件被更改,包括 3841 次插入3646 次删除
  1. 2641 2627
      fpga/output_files/max80.jam
  2. 二进制
      fpga/output_files/max80.jbc
  3. 二进制
      fpga/output_files/max80.jic
  4. 1 1
      fpga/output_files/max80.map
  5. 二进制
      fpga/output_files/max80.pof
  6. 二进制
      fpga/output_files/max80.sof
  7. 2 2
      fw/Makefile
  8. 1028 992
      fw/boot.mif
  9. 23 0
      fw/die.c
  10. 9 0
      fw/fw.h
  11. 43 10
      fw/head.S
  12. 12 14
      fw/hello.c
  13. 82 0
      fw/picorv32.h

文件差异内容过多而无法显示
+ 2641 - 2627
fpga/output_files/max80.jam


二进制
fpga/output_files/max80.jbc


二进制
fpga/output_files/max80.jic


+ 1 - 1
fpga/output_files/max80.map

@@ -10,7 +10,7 @@ Quad-Serial configuration device dummy clock cycle: 8
 
 Notes:
 
-- Data checksum for this conversion is 0xF769F89A
+- Data checksum for this conversion is 0xF769E5AB
 
 - All the addresses in this file are byte addresses
 

二进制
fpga/output_files/max80.pof


二进制
fpga/output_files/max80.sof


+ 2 - 2
fw/Makefile

@@ -31,7 +31,7 @@ boot_depth  := 2048
 boot_width  := 32
 boot_stride := 1
 
-boot.elf: head.o hello.o console.o
+boot.elf: head.o die.o hello.o console.o
 
 %.mif: %.bin bin2mif.pl
 	$(PERL) bin2mif.pl $< $@ $($*_depth) $($*_width) $($*_stride)
@@ -61,7 +61,7 @@ boot.elf: head.o hello.o console.o
 	$(CC) $(SFLAGS) $(SFLAGS_$<) $(gendeps) -c -o $@ $<
 
 %.s: %.S
-	$(CC) $(SFLAGS) $(SFLAGS_$<) $(gendeps) -o $@ $<
+	$(CC) $(SFLAGS) $(SFLAGS_$<) $(gendeps) -E -o $@ $<
 
 clean:
 	rm -f *.o *.i *.s *.elf *.bin .*.d

+ 1028 - 992
fw/boot.mif

@@ -5,1001 +5,1037 @@ ADDRESS_RADIX = HEX;
 DATA_RADIX = HEX;
 CONTENT BEGIN
 000 : 00002137;
-001 : 1B20006F;
+001 : 21E0006F;
 002 : 00000000;
 003 : 00000000;
-004 : A001A009;
-005 : 6571715D;
-006 : C0CAC2A6;
-007 : DA56DC52;
-008 : D65ED85A;
-009 : 20050513;
-00A : 45C12AB7;
-00B : 78DADB37;
-00C : 00040BB7;
-00D : 02000A37;
-00E : DE4EC4A2;
-00F : D462C686;
-010 : D06AD266;
-011 : 4401CE6E;
-012 : 49812C15;
-013 : C0000023;
-014 : 86018493;
-015 : 86818913;
-016 : BA1A8A93;
-017 : ECBB0B13;
-018 : 1A7D1BFD;
-019 : 85136085;
-01A : 24B1E380;
-01B : 86C1A603;
-01C : 0C936285;
-01D : 85A20014;
-01E : D9028513;
-01F : 0FFCFC93;
-020 : 237324B5;
-021 : 4094C010;
-022 : 05B76385;
-023 : 06374000;
-024 : 85134200;
-025 : C41ADAC3;
-026 : 04132C91;
-027 : 45A102D0;
-028 : 00890023;
-029 : 86B1A823;
-02A : 44014D01;
-02B : 87018C13;
-02C : 400006B7;
-02D : 05335DFD;
-02E : 202300D4;
-02F : 45810005;
-030 : 2A85C62A;
-031 : 55FD4532;
-032 : 20230D05;
-033 : 229501B5;
-034 : 45934532;
-035 : C10CFFF4;
-036 : 45322AA9;
-037 : C10085A2;
-038 : 06332A89;
-039 : 45320354;
-03A : 016605B3;
-03B : 2291C10C;
-03C : 017D7733;
-03D : 400006B7;
-03E : 02D00813;
-03F : 4883E719;
-040 : 00230009;
-041 : 0023C510;
-042 : AE030109;
-043 : 0EB30004;
-044 : F43301C4;
-045 : F045014E;
-046 : 05136F05;
-047 : 2A61DE4F;
-048 : 20234FA1;
-049 : 0D9301FC;
-04A : 0C3702D0;
-04B : 05334000;
-04C : 0D050354;
-04D : 016505B3;
-04E : 01840533;
-04F : 77B328DD;
-050 : E799017D;
-051 : 00094083;
-052 : C4100023;
-053 : 01B90023;
-054 : 0004A283;
-055 : 40540333;
-056 : 01437433;
-057 : 23F3F869;
-058 : 45A2C010;
-059 : 06936755;
-05A : 86338207;
-05B : 55B340B3;
-05C : 680502D6;
-05D : E1080513;
-05E : 2A8D8466;
-05F : 0004A883;
-060 : C5134E0D;
-061 : 0EB3FFF9;
-062 : 5D13031E;
-063 : 09864025;
-064 : 001D7793;
-065 : 0137E2B3;
-066 : 0FF2F993;
-067 : 014EFF33;
-068 : 017EDF93;
-069 : 01FF4C33;
-06A : FFCC7D93;
-06B : 01B4A023;
-06C : C1300023;
-06D : 1197BD45;
-06E : 81930000;
-06F : 85135761;
-070 : 86138681;
-071 : 8E098A01;
-072 : 2A794581;
-073 : 00000513;
-074 : 0513C519;
-075 : 00970000;
-076 : 00E70000;
-077 : 22350000;
-078 : 004C4502;
-079 : 353D4601;
-07A : 1141B52D;
-07B : C783C422;
-07C : C6068841;
-07D : 0793EF91;
-07E : CB810000;
-07F : 05136505;
-080 : 0097F205;
-081 : 00E70000;
-082 : 47850000;
-083 : 88F18223;
-084 : 442240B2;
-085 : 80820141;
-086 : 00000793;
-087 : 6505CB91;
-088 : 88818593;
-089 : F2050513;
-08A : 00000317;
-08B : 00000067;
-08C : 41108082;
-08D : 04B60363;
-08E : C4221141;
-08F : 87018413;
-090 : C606401C;
-091 : 86AECF89;
-092 : 650585AA;
-093 : D6C50513;
-094 : 22832871;
-095 : 83130004;
-096 : 2023FFF2;
-097 : 85930064;
-098 : 419086C1;
-099 : 05800713;
-09A : 00160693;
-09B : 4422C194;
-09C : 86E18423;
-09D : 014140B2;
-09E : 80828082;
-09F : 3216D737;
-0A0 : 0313478D;
-0A1 : 82B39487;
-0A2 : 353302A7;
-0A3 : 83B30265;
-0A4 : 859300A2;
-0A5 : 2223FFF3;
-0A6 : 8082C4B0;
-0A7 : C4A00023;
-0A8 : C01026F3;
-0A9 : 34700713;
-0AA : C01027F3;
-0AB : 40D782B3;
-0AC : FE577CE3;
-0AD : 11418082;
-0AE : C606C422;
-0AF : 4503842A;
-0B0 : E5090004;
-0B1 : 442240B2;
-0B2 : 80820141;
-0B3 : 37F90405;
-0B4 : 7175B7FD;
-0B5 : 86AE862A;
-0B6 : 0593850A;
-0B7 : C7060800;
-0B8 : 850A28ED;
-0B9 : 40BA3FC9;
-0BA : 80826149;
-0BB : D22E7139;
-0BC : CE06104C;
-0BD : D636D432;
-0BE : DA3ED83A;
-0BF : DE46DC42;
-0C0 : 3FC1C62E;
-0C1 : 612140F2;
-0C2 : 11418082;
-0C3 : C226C422;
-0C4 : 64856405;
-0C5 : F2448793;
-0C6 : F2440413;
-0C7 : C04A8C1D;
-0C8 : 8409C606;
-0C9 : F2448493;
-0CA : 15634901;
-0CB : 64850289;
-0CC : 87936405;
-0CD : 0413F244;
-0CE : 8C1DF284;
-0CF : 84938409;
-0D0 : 4901F244;
-0D1 : 00891D63;
-0D2 : 442240B2;
-0D3 : 49024492;
-0D4 : 80820141;
-0D5 : 0905409C;
-0D6 : 97820491;
-0D7 : 409CB7F9;
-0D8 : 04910905;
-0D9 : BFF99782;
-0DA : C611832A;
-0DB : 00B30023;
-0DC : 0305167D;
-0DD : 8082FE65;
-0DE : DCA27119;
-0DF : DE86DAA6;
-0E0 : 84AAD8CA;
-0E1 : 5C638432;
-0E2 : 07930006;
-0E3 : C11C08B0;
-0E4 : 50F6557D;
-0E5 : 54D65466;
-0E6 : 61095946;
-0E7 : 07938082;
-0E8 : 1A232080;
-0E9 : C42E00F1;
-0EA : 8636CC2E;
-0EB : 86BA4781;
-0EC : 0793C019;
-0ED : 597DFFF4;
-0EE : 8526002C;
-0EF : CE3EC83E;
-0F0 : 01211B23;
-0F1 : 55632221;
-0F2 : 07930125;
-0F3 : C09C08B0;
-0F4 : 47A2D069;
-0F5 : 00078023;
-0F6 : 8736BF6D;
-0F7 : 862E86B2;
-0F8 : A50385AA;
-0F9 : BF498641;
-0FA : C84A1101;
-0FB : 0085A903;
-0FC : C64ECC22;
-0FD : C256C452;
-0FE : CA26CE06;
-0FF : AA83C05A;
-100 : 842E0005;
-101 : 89B68A32;
-102 : 0726E763;
-103 : 00C5D783;
-104 : 4807F713;
-105 : 4858CF39;
-106 : 498C448D;
-107 : 02E484B3;
-108 : 8AB34709;
-109 : 8B2A40BA;
-10A : 02E4C4B3;
-10B : 00168713;
-10C : F3639756;
-10D : 84BA00E4;
-10E : 4007F793;
-10F : 85A6C7A5;
-110 : 2F81855A;
-111 : C925892A;
-112 : 8656480C;
-113 : 578325B5;
-114 : F79300C4;
-115 : E793B7F7;
-116 : 16230807;
-117 : 282300F4;
-118 : C8440124;
-119 : 84B39956;
-11A : 20234154;
-11B : C4040124;
-11C : F363894E;
-11D : 894E0129;
-11E : 864A4008;
-11F : 2D8185D2;
-120 : 4501441C;
-121 : 412787B3;
-122 : 401CC41C;
-123 : C01C97CA;
-124 : 446240F2;
-125 : 494244D2;
-126 : 4A2249B2;
-127 : 4B024A92;
-128 : 80826105;
-129 : 855A8626;
-12A : 7BE000EF;
-12B : F945892A;
-12C : 855A480C;
-12D : 47B12581;
-12E : 00FB2023;
-12F : 00C45783;
-130 : E793557D;
-131 : 16230407;
-132 : B7D900F4;
-133 : 00C5D783;
-134 : D5227171;
-135 : D14AD326;
-136 : D706CD52;
-137 : CB56CF4E;
-138 : C75EC95A;
-139 : C366C562;
-13A : DEEEC16A;
-13B : 0807F793;
-13C : 892E8A2A;
-13D : 843684B2;
-13E : 499CC3B1;
-13F : 0593E3A1;
-140 : 2D410400;
-141 : 00A92023;
-142 : 00A92823;
-143 : 47B1E505;
-144 : 00FA2023;
-145 : 50BA557D;
-146 : 549A542A;
-147 : 49FA590A;
-148 : 4ADA4A6A;
-149 : 4BBA4B4A;
-14A : 4C9A4C2A;
-14B : 5DF64D0A;
-14C : 8082614D;
-14D : 04000793;
-14E : 00F92A23;
-14F : 02000793;
-150 : 02F104A3;
-151 : 03000793;
-152 : 0523D202;
-153 : C62202F1;
-154 : 02500C93;
-155 : 6B856B05;
-156 : 0A936D05;
-157 : 84260000;
-158 : 00044783;
-159 : 9E63C399;
-15A : 0DB30997;
-15B : 0D634094;
-15C : 86EE0094;
-15D : 85CA8626;
-15E : 35BD8552;
-15F : 0B6357FD;
-160 : 579218F5;
-161 : D23E97EE;
-162 : 00044783;
-163 : 18078463;
-164 : 049357FD;
-165 : C8020014;
-166 : CA3ECE02;
-167 : 09A3CC02;
-168 : D4820401;
-169 : C5834D85;
-16A : 46150004;
-16B : E88B0513;
-16C : 47C221FD;
-16D : 00148413;
-16E : F713E539;
-16F : C7090107;
-170 : 02000713;
-171 : 04E109A3;
-172 : 0087F713;
-173 : 0713C709;
-174 : 09A302B0;
-175 : C68304E1;
-176 : 07130004;
-177 : 8D6302A0;
-178 : 47F202E6;
-179 : 46818426;
-17A : 45294625;
-17B : 00044703;
-17C : 00140593;
-17D : FD070713;
-17E : 06E67563;
-17F : CE3EC695;
-180 : 0405A025;
-181 : 0713BFB1;
-182 : 8D19E88B;
-183 : 00AD9533;
-184 : C83E8FC9;
-185 : BF4184A2;
-186 : 06934732;
-187 : 43180047;
-188 : 4963C636;
-189 : CE3A0207;
-18A : 00044703;
-18B : 02E00793;
-18C : 06F71063;
-18D : 00144703;
-18E : 02A00793;
-18F : 02F71B63;
-190 : 040947B2;
-191 : 00478713;
-192 : C63A439C;
-193 : 0207C163;
-194 : A83DCA3E;
-195 : 40E00733;
-196 : 0027E793;
-197 : C83ECE3A;
-198 : 87B3B7E1;
-199 : 842E02A7;
-19A : 97BA4685;
-19B : 57FDB741;
-19C : 0405B7C5;
-19D : 4681CA02;
-19E : 46254781;
-19F : 47034529;
-1A0 : 05930004;
-1A1 : 07130014;
-1A2 : 7D63FD07;
-1A3 : F2E904E6;
-1A4 : 00044583;
-1A5 : 8513460D;
-1A6 : 2111E90B;
-1A7 : 8793CD01;
-1A8 : 8D1DE90B;
-1A9 : 071347C2;
-1AA : 17330400;
-1AB : 8FD900A7;
-1AC : C83E0405;
-1AD : 00044583;
-1AE : 05134619;
-1AF : 0493E94D;
-1B0 : 04230014;
-1B1 : 2EE102B1;
-1B2 : 9763CD39;
-1B3 : 4742020A;
-1B4 : 771347B2;
-1B5 : CF091007;
-1B6 : C63E0791;
-1B7 : 97CE5792;
-1B8 : BDB5D23E;
-1B9 : 02A787B3;
-1BA : 4685842E;
-1BB : BF4197BA;
-1BC : 9BE1079D;
-1BD : B7D507A1;
-1BE : 06930078;
-1BF : 864A3E80;
-1C0 : 8552080C;
-1C1 : 00000097;
-1C2 : 000000E7;
-1C3 : 89AA57FD;
-1C4 : FCF516E3;
-1C5 : 00C95783;
-1C6 : F793557D;
-1C7 : 9CE30407;
-1C8 : 5512DE07;
-1C9 : 0078BBCD;
-1CA : 3E800693;
-1CB : 080C864A;
-1CC : 2A118552;
-1CD : 7179BFE1;
-1CE : 499CCC52;
-1CF : 45988A3A;
-1D0 : D04AD422;
-1D1 : CA56CE4E;
-1D2 : D226D606;
-1D3 : C65EC85A;
-1D4 : 842E89AA;
-1D5 : 8AB68932;
-1D6 : 00E7D363;
-1D7 : 202387BA;
-1D8 : 470300F9;
-1D9 : C7010434;
-1DA : 20230785;
-1DB : 401C00F9;
-1DC : 0207F793;
-1DD : 2783C791;
-1DE : 07890009;
-1DF : 00F92023;
-1E0 : 88994004;
-1E1 : 0B13E891;
-1E2 : 5BFD0194;
-1E3 : 2703445C;
-1E4 : 8F990009;
-1E5 : 04F4CC63;
-1E6 : 04344783;
-1E7 : 00F036B3;
-1E8 : F793401C;
-1E9 : EBA50207;
-1EA : 04340613;
-1EB : 854E85D6;
-1EC : 57FD9A02;
-1ED : 04F50363;
-1EE : 4711401C;
-1EF : 8B994481;
-1F0 : 00E79963;
-1F1 : 27834444;
-1F2 : 8C9D0009;
-1F3 : 0004D363;
-1F4 : 441C4481;
-1F5 : 54634818;
-1F6 : 8F9900F7;
-1F7 : 490194BE;
-1F8 : 5B7D0469;
-1F9 : 05249863;
-1FA : A8094501;
-1FB : 865A4685;
-1FC : 854E85D6;
-1FD : 1E639A02;
-1FE : 557D0175;
-1FF : 542250B2;
-200 : 59025492;
-201 : 4A6249F2;
-202 : 4B424AD2;
-203 : 61454BB2;
-204 : 04858082;
-205 : 0733BFA5;
-206 : 061300D4;
-207 : 01A30300;
-208 : 470304C7;
-209 : 87930454;
-20A : 97A20016;
-20B : 81A30689;
-20C : BF9D04E7;
-20D : 86224685;
-20E : 854E85D6;
-20F : 0EE39A02;
-210 : 0905FB65;
-211 : 7179B745;
-212 : D226D422;
-213 : CE4ED04A;
-214 : CC52D606;
-215 : C85ACA56;
-216 : 0185C883;
-217 : 07800793;
-218 : 842E84AA;
-219 : 89B68932;
-21A : 0117EE63;
-21B : 06200793;
-21C : 04358693;
-21D : 0117ED63;
-21E : 1A088963;
-21F : 05800793;
-220 : 16F88B63;
-221 : 04240A93;
-222 : 05140123;
-223 : 8793A805;
-224 : F793F9D8;
-225 : 46550FF7;
-226 : FEF666E3;
-227 : 078A6605;
-228 : EC460613;
-229 : 439C97B2;
-22A : 431C8782;
-22B : 04258A93;
-22C : 00478693;
-22D : C314439C;
-22E : 04F58123;
-22F : AA494785;
-230 : 4308419C;
-231 : 0807F613;
-232 : 00450593;
-233 : 411CC205;
-234 : 6805C30C;
-235 : 0007D863;
-236 : 02D00713;
-237 : 40F007B3;
-238 : 04E401A3;
-239 : E9C80813;
-23A : A0994729;
-23B : 0407F613;
-23C : C30C411C;
-23D : 07C2DE79;
-23E : BFE187C1;
-23F : 431C4190;
-240 : 08067513;
-241 : 00478593;
-242 : C30CC501;
-243 : A039439C;
-244 : 04067613;
-245 : DA7DC30C;
-246 : 0007D783;
-247 : 07136805;
-248 : 081306F0;
-249 : 8C63E9C8;
-24A : 47290CE8;
-24B : 040401A3;
-24C : C4104050;
-24D : 00064563;
-24E : 99ED400C;
-24F : E399C00C;
-250 : CE198AB6;
-251 : F6338AB6;
-252 : 1AFD02E7;
-253 : 46039642;
-254 : 80230006;
-255 : 863E00CA;
-256 : 02E7D7B3;
-257 : FEE675E3;
-258 : 1E6347A1;
-259 : 401C00F7;
-25A : CB918B85;
-25B : 481C4058;
-25C : 00E7C763;
-25D : 03000793;
-25E : FEFA8FA3;
-25F : 86B31AFD;
-260 : C8144156;
-261 : 86CA874E;
-262 : 85A20070;
-263 : 33658526;
-264 : 13635A7D;
-265 : 557D0D45;
-266 : 542250B2;
-267 : 59025492;
-268 : 4A6249F2;
-269 : 4B424AD2;
-26A : 80826145;
-26B : E793419C;
-26C : C19C0207;
-26D : 08936805;
-26E : 08130780;
-26F : 02A3EB08;
-270 : 40100514;
-271 : 7513430C;
-272 : 419C0806;
-273 : E5110591;
-274 : 04067513;
-275 : 07C2C119;
-276 : C30C83C1;
-277 : 00167713;
-278 : 6613C701;
-279 : C0100206;
-27A : F3A94741;
-27B : 76134010;
-27C : C010FDF6;
-27D : 6805BF25;
-27E : E9C80813;
-27F : 4721B7C9;
-280 : 4190B735;
-281 : 49CC431C;
-282 : 08067813;
-283 : 00478513;
-284 : 00080663;
-285 : 439CC308;
-286 : A801C38C;
-287 : 7613C308;
-288 : 439C0406;
-289 : 9023DA75;
-28A : 282300B7;
-28B : 8AB60004;
-28C : 431CBF91;
-28D : 458141D0;
-28E : 00478693;
-28F : AA83C314;
-290 : 85560007;
-291 : C50128A9;
-292 : 41550533;
-293 : 405CC048;
-294 : 01A3C81C;
-295 : B73D0404;
-296 : 86564814;
-297 : 852685CA;
-298 : 0AE39982;
-299 : 401CF345;
-29A : E78D8B89;
-29B : 444847B2;
-29C : F2F554E3;
-29D : B70D853E;
-29E : 86564685;
-29F : 852685CA;
-2A0 : 0AE39982;
-2A1 : 0A05F165;
-2A2 : 4732445C;
-2A3 : 45E38F99;
-2A4 : BFE9FEFA;
-2A5 : 0A934A01;
-2A6 : 5B7D0194;
-2A7 : F593B7F5;
-2A8 : 962A0FF5;
-2A9 : 00C51463;
-2AA : 80824501;
-2AB : 00054783;
-2AC : FEB78DE3;
-2AD : B7FD0505;
-2AE : CA09832A;
-2AF : 00058383;
-2B0 : 00730023;
-2B1 : 0305167D;
-2B2 : FA6D0585;
-2B3 : C2158082;
-2B4 : 4685832A;
-2B5 : 00B56763;
-2B6 : 071356FD;
-2B7 : 933AFFF6;
-2B8 : 838395BA;
-2B9 : 00230005;
-2BA : 167D0073;
-2BB : 95B69336;
-2BC : 8082FA6D;
-2BD : A783CDD1;
-2BE : 1101FFC5;
-2BF : CE06CC22;
-2C0 : FFC58413;
-2C1 : 0007D363;
-2C2 : C62A943E;
-2C3 : A7832ADD;
-2C4 : 45328741;
-2C5 : 2223EB89;
-2C6 : AA230004;
-2C7 : 44628681;
-2C8 : 610540F2;
-2C9 : 7D63A2C5;
-2CA : 401000F4;
-2CB : 00C406B3;
-2CC : 00D79663;
-2CD : 43DC4394;
-2CE : C01496B2;
-2CF : BFF1C05C;
-2D0 : 43DC873E;
-2D1 : 7DE3C399;
-2D2 : 4314FEF4;
-2D3 : 00D70633;
-2D4 : 00861F63;
-2D5 : 96B24010;
-2D6 : 0633C314;
-2D7 : 90E300D7;
-2D8 : 4390FCC7;
-2D9 : 96B243DC;
-2DA : C35CC314;
-2DB : 7563BF4D;
-2DC : 47B100C4;
-2DD : B765C11C;
-2DE : 06B34010;
-2DF : 966300C4;
-2E0 : 439400D7;
-2E1 : 96B243DC;
-2E2 : C05CC014;
-2E3 : BF41C340;
-2E4 : 11018082;
-2E5 : 8493CA26;
-2E6 : 98F10035;
-2E7 : CE06C84A;
-2E8 : C64ECC22;
-2E9 : 47B104A1;
-2EA : F263892A;
-2EB : 44B104F4;
-2EC : 04B4E163;
-2ED : 22B1854A;
-2EE : 87418713;
-2EF : 86934318;
-2F0 : 843A8741;
-2F1 : 8413E031;
-2F2 : 401C8781;
-2F3 : 4581E789;
-2F4 : 2219854A;
-2F5 : 85A6C008;
-2F6 : 28FD854A;
-2F7 : 186359FD;
-2F8 : 47B10735;
-2F9 : 00F92023;
-2FA : 2A29854A;
-2FB : D1E3A031;
-2FC : 47B1FC04;
-2FD : 00F92023;
-2FE : 40F24501;
-2FF : 44D24462;
-300 : 49B24942;
-301 : 80826105;
-302 : 8F85401C;
-303 : 0207CE63;
-304 : 7663462D;
-305 : C01C00F6;
-306 : C004943E;
-307 : 405CA029;
-308 : 02871263;
-309 : 854AC29C;
-30A : 051328F1;
-30B : 079300B4;
-30C : 99610044;
-30D : 40F50733;
-30E : FCF501E3;
-30F : 8F89943A;
-310 : BF65C01C;
-311 : B7C5C35C;
-312 : 40408722;
-313 : 0413BFA5;
-314 : 98710035;
-315 : FC8503E3;
-316 : 40A405B3;
-317 : 28AD854A;
-318 : FB351DE3;
-319 : 1101BFBD;
-31A : CE06CC22;
-31B : C84ACA26;
-31C : C452C64E;
-31D : E9918432;
-31E : 40F24462;
-31F : 494244D2;
-320 : 4A2249B2;
-321 : 610585B2;
-322 : EE01B729;
-323 : 448135A5;
-324 : 446240F2;
+004 : C0067139;
+005 : C41AC216;
+006 : C872C61E;
+007 : CC7ACA76;
+008 : D02ACE7E;
+009 : D432D22E;
+00A : D83AD636;
+00B : DC42DA3E;
+00C : 850BDE46;
+00D : 00EF0000;
+00E : 40822680;
+00F : 43224292;
+010 : 4E4243B2;
+011 : 4F624ED2;
+012 : 55024FF2;
+013 : 56225592;
+014 : 574256B2;
+015 : 586257D2;
+016 : 612158F2;
+017 : 0400000B;
+018 : 8537715D;
+019 : C4A2001E;
+01A : DC52DE4E;
+01B : D85ADA56;
+01C : D266D65E;
+01D : 48050513;
+01E : 45C12A37;
+01F : 78DADAB7;
+020 : 00040B37;
+021 : 020009B7;
+022 : 00800BB7;
+023 : C686C0CA;
+024 : D462C2A6;
+025 : CE6ED06A;
+026 : 2C9D4901;
+027 : 86C18C93;
+028 : C0000023;
+029 : 86018413;
+02A : BA1A0A13;
+02B : ECBA8A93;
+02C : 19FD1B7D;
+02D : 60850B85;
+02E : ECC08513;
+02F : A6032479;
+030 : 6285000C;
+031 : 00148793;
+032 : 851385A6;
+033 : C03EE242;
+034 : 23732C45;
+035 : 4014C010;
+036 : 06376385;
+037 : 05B74200;
+038 : 85134000;
+039 : C21AE403;
+03A : 05932C61;
+03B : 462102D0;
+03C : 86B18423;
+03D : 86C1A823;
+03E : 4D014F85;
+03F : 86818493;
+040 : 87018C13;
+041 : 40000E37;
+042 : 05335DFD;
+043 : 202301CD;
+044 : 45810005;
+045 : C42AC67E;
+046 : 4522227D;
+047 : 202355FD;
+048 : 225501B5;
+049 : 45934522;
+04A : C10CFFFD;
+04B : 45222A69;
+04C : 202385EA;
+04D : 2A4101A5;
+04E : 034D06B3;
+04F : 85B34522;
+050 : C10C0156;
+051 : 47322249;
+052 : 40000E37;
+053 : 02D00813;
+054 : 016778B3;
+055 : 00089863;
+056 : 0004CE83;
+057 : C5D00023;
+058 : 01048023;
+059 : 00042F03;
+05A : 00170F93;
+05B : 7D339D7A;
+05C : 9CE3013D;
+05D : 6505F97F;
+05E : E7850513;
+05F : 47A122F9;
+060 : 00FC2023;
+061 : 4D014D85;
+062 : 40000337;
+063 : 034D00B3;
+064 : 006D0533;
+065 : 015085B3;
+066 : F2B3223D;
+067 : 0337016D;
+068 : 03934000;
+069 : 986302D0;
+06A : C5830002;
+06B : 00230004;
+06C : 8023C4B0;
+06D : 40100074;
+06E : 0C330D85;
+06F : 7D3340CD;
+070 : 95E3013C;
+071 : 24F3FD7D;
+072 : 4692C010;
+073 : 8E1368D5;
+074 : 87338208;
+075 : 55B340D4;
+076 : 680503C7;
+077 : EA480513;
+078 : 2E832245;
+079 : 4F0D0004;
+07A : FFF94593;
+07B : 03DF0FB3;
+07C : 4025D613;
+07D : 7C130906;
+07E : 6D330016;
+07F : 7913012C;
+080 : F5330FFD;
+081 : D793013F;
+082 : 42B3017F;
+083 : F31300F5;
+084 : 6393FF82;
+085 : 20230043;
+086 : 00230074;
+087 : 4482C120;
+088 : 1197BD59;
+089 : 81930000;
+08A : 851359A1;
+08B : 86138681;
+08C : 8E098A01;
+08D : 22D94581;
+08E : 00000513;
+08F : 0513C519;
+090 : 00970000;
+091 : 00E70000;
+092 : 2A910000;
+093 : 004C4502;
+094 : 35394601;
+095 : 1141A0A9;
+096 : C783C422;
+097 : C6068841;
+098 : 0793EF91;
+099 : CB810000;
+09A : 05136505;
+09B : 0097FB05;
+09C : 00E70000;
+09D : 47850000;
+09E : 88F18223;
+09F : 442240B2;
+0A0 : 80820141;
+0A1 : 00000793;
+0A2 : 6505CB91;
+0A3 : 88818593;
+0A4 : FB050513;
+0A5 : 00000317;
+0A6 : 00000067;
+0A7 : 77378082;
+0A8 : 47890140;
+0A9 : F3F70293;
+0AA : 0FF7F693;
+0AB : C0D00023;
+0AC : 0077C793;
+0AD : C0102673;
+0AE : C0102373;
+0AF : 40C303B3;
+0B0 : FE72FCE3;
+0B1 : 4110B7D5;
+0B2 : 04B60363;
+0B3 : C4221141;
+0B4 : 87018413;
+0B5 : C606401C;
+0B6 : 86AECF89;
+0B7 : 650585AA;
+0B8 : E0050513;
+0B9 : 22832871;
+0BA : 83130004;
+0BB : 2023FFF2;
+0BC : 85930064;
+0BD : 419086C1;
+0BE : 05800713;
+0BF : 00160693;
+0C0 : 4422C194;
+0C1 : 86E18423;
+0C2 : 014140B2;
+0C3 : 80828082;
+0C4 : 3216D737;
+0C5 : 0313478D;
+0C6 : 82B39487;
+0C7 : 353302A7;
+0C8 : 83B30265;
+0C9 : 859300A2;
+0CA : 2223FFF3;
+0CB : 8082C4B0;
+0CC : C4A00023;
+0CD : C01026F3;
+0CE : 34700713;
+0CF : C01027F3;
+0D0 : 40D782B3;
+0D1 : FE577CE3;
+0D2 : 11418082;
+0D3 : C606C422;
+0D4 : 4503842A;
+0D5 : E5090004;
+0D6 : 442240B2;
+0D7 : 80820141;
+0D8 : 37F90405;
+0D9 : 7175B7FD;
+0DA : 86AE862A;
+0DB : 0593850A;
+0DC : C7060800;
+0DD : 850A28ED;
+0DE : 40BA3FC9;
+0DF : 80826149;
+0E0 : D22E7139;
+0E1 : CE06104C;
+0E2 : D636D432;
+0E3 : DA3ED83A;
+0E4 : DE46DC42;
+0E5 : 3FC1C62E;
+0E6 : 612140F2;
+0E7 : 11418082;
+0E8 : C226C422;
+0E9 : 64856405;
+0EA : FB448793;
+0EB : FB440413;
+0EC : C04A8C1D;
+0ED : 8409C606;
+0EE : FB448493;
+0EF : 15634901;
+0F0 : 64850289;
+0F1 : 87936405;
+0F2 : 0413FB44;
+0F3 : 8C1DFB84;
+0F4 : 84938409;
+0F5 : 4901FB44;
+0F6 : 00891D63;
+0F7 : 442240B2;
+0F8 : 49024492;
+0F9 : 80820141;
+0FA : 0905409C;
+0FB : 97820491;
+0FC : 409CB7F9;
+0FD : 04910905;
+0FE : BFF99782;
+0FF : C611832A;
+100 : 00B30023;
+101 : 0305167D;
+102 : 8082FE65;
+103 : DCA27119;
+104 : DE86DAA6;
+105 : 84AAD8CA;
+106 : 5C638432;
+107 : 07930006;
+108 : C11C08B0;
+109 : 50F6557D;
+10A : 54D65466;
+10B : 61095946;
+10C : 07938082;
+10D : 1A232080;
+10E : C42E00F1;
+10F : 8636CC2E;
+110 : 86BA4781;
+111 : 0793C019;
+112 : 597DFFF4;
+113 : 8526002C;
+114 : CE3EC83E;
+115 : 01211B23;
+116 : 55632221;
+117 : 07930125;
+118 : C09C08B0;
+119 : 47A2D069;
+11A : 00078023;
+11B : 8736BF6D;
+11C : 862E86B2;
+11D : A50385AA;
+11E : BF498641;
+11F : C84A1101;
+120 : 0085A903;
+121 : C64ECC22;
+122 : C256C452;
+123 : CA26CE06;
+124 : AA83C05A;
+125 : 842E0005;
+126 : 89B68A32;
+127 : 0726E763;
+128 : 00C5D783;
+129 : 4807F713;
+12A : 4858CF39;
+12B : 498C448D;
+12C : 02E484B3;
+12D : 8AB34709;
+12E : 8B2A40BA;
+12F : 02E4C4B3;
+130 : 00168713;
+131 : F3639756;
+132 : 84BA00E4;
+133 : 4007F793;
+134 : 85A6C7A5;
+135 : 2F81855A;
+136 : C925892A;
+137 : 8656480C;
+138 : 578325B5;
+139 : F79300C4;
+13A : E793B7F7;
+13B : 16230807;
+13C : 282300F4;
+13D : C8440124;
+13E : 84B39956;
+13F : 20234154;
+140 : C4040124;
+141 : F363894E;
+142 : 894E0129;
+143 : 864A4008;
+144 : 2D8185D2;
+145 : 4501441C;
+146 : 412787B3;
+147 : 401CC41C;
+148 : C01C97CA;
+149 : 446240F2;
+14A : 494244D2;
+14B : 4A2249B2;
+14C : 4B024A92;
+14D : 80826105;
+14E : 855A8626;
+14F : 7BE000EF;
+150 : F945892A;
+151 : 855A480C;
+152 : 47B12581;
+153 : 00FB2023;
+154 : 00C45783;
+155 : E793557D;
+156 : 16230407;
+157 : B7D900F4;
+158 : 00C5D783;
+159 : D5227171;
+15A : D14AD326;
+15B : D706CD52;
+15C : CB56CF4E;
+15D : C75EC95A;
+15E : C366C562;
+15F : DEEEC16A;
+160 : 0807F793;
+161 : 892E8A2A;
+162 : 843684B2;
+163 : 499CC3B1;
+164 : 0593E3A1;
+165 : 2D410400;
+166 : 00A92023;
+167 : 00A92823;
+168 : 47B1E505;
+169 : 00FA2023;
+16A : 50BA557D;
+16B : 549A542A;
+16C : 49FA590A;
+16D : 4ADA4A6A;
+16E : 4BBA4B4A;
+16F : 4C9A4C2A;
+170 : 5DF64D0A;
+171 : 8082614D;
+172 : 04000793;
+173 : 00F92A23;
+174 : 02000793;
+175 : 02F104A3;
+176 : 03000793;
+177 : 0523D202;
+178 : C62202F1;
+179 : 02500C93;
+17A : 6B856B05;
+17B : 0A936D05;
+17C : 84260000;
+17D : 00044783;
+17E : 9E63C399;
+17F : 0DB30997;
+180 : 0D634094;
+181 : 86EE0094;
+182 : 85CA8626;
+183 : 35BD8552;
+184 : 0B6357FD;
+185 : 579218F5;
+186 : D23E97EE;
+187 : 00044783;
+188 : 18078463;
+189 : 049357FD;
+18A : C8020014;
+18B : CA3ECE02;
+18C : 09A3CC02;
+18D : D4820401;
+18E : C5834D85;
+18F : 46150004;
+190 : F1CB0513;
+191 : 47C221FD;
+192 : 00148413;
+193 : F713E539;
+194 : C7090107;
+195 : 02000713;
+196 : 04E109A3;
+197 : 0087F713;
+198 : 0713C709;
+199 : 09A302B0;
+19A : C68304E1;
+19B : 07130004;
+19C : 8D6302A0;
+19D : 47F202E6;
+19E : 46818426;
+19F : 45294625;
+1A0 : 00044703;
+1A1 : 00140593;
+1A2 : FD070713;
+1A3 : 06E67563;
+1A4 : CE3EC695;
+1A5 : 0405A025;
+1A6 : 0713BFB1;
+1A7 : 8D19F1CB;
+1A8 : 00AD9533;
+1A9 : C83E8FC9;
+1AA : BF4184A2;
+1AB : 06934732;
+1AC : 43180047;
+1AD : 4963C636;
+1AE : CE3A0207;
+1AF : 00044703;
+1B0 : 02E00793;
+1B1 : 06F71063;
+1B2 : 00144703;
+1B3 : 02A00793;
+1B4 : 02F71B63;
+1B5 : 040947B2;
+1B6 : 00478713;
+1B7 : C63A439C;
+1B8 : 0207C163;
+1B9 : A83DCA3E;
+1BA : 40E00733;
+1BB : 0027E793;
+1BC : C83ECE3A;
+1BD : 87B3B7E1;
+1BE : 842E02A7;
+1BF : 97BA4685;
+1C0 : 57FDB741;
+1C1 : 0405B7C5;
+1C2 : 4681CA02;
+1C3 : 46254781;
+1C4 : 47034529;
+1C5 : 05930004;
+1C6 : 07130014;
+1C7 : 7D63FD07;
+1C8 : F2E904E6;
+1C9 : 00044583;
+1CA : 8513460D;
+1CB : 2111F24B;
+1CC : 8793CD01;
+1CD : 8D1DF24B;
+1CE : 071347C2;
+1CF : 17330400;
+1D0 : 8FD900A7;
+1D1 : C83E0405;
+1D2 : 00044583;
+1D3 : 05134619;
+1D4 : 0493F28D;
+1D5 : 04230014;
+1D6 : 2EE102B1;
+1D7 : 9763CD39;
+1D8 : 4742020A;
+1D9 : 771347B2;
+1DA : CF091007;
+1DB : C63E0791;
+1DC : 97CE5792;
+1DD : BDB5D23E;
+1DE : 02A787B3;
+1DF : 4685842E;
+1E0 : BF4197BA;
+1E1 : 9BE1079D;
+1E2 : B7D507A1;
+1E3 : 06930078;
+1E4 : 864A47C0;
+1E5 : 8552080C;
+1E6 : 00000097;
+1E7 : 000000E7;
+1E8 : 89AA57FD;
+1E9 : FCF516E3;
+1EA : 00C95783;
+1EB : F793557D;
+1EC : 9CE30407;
+1ED : 5512DE07;
+1EE : 0078BBCD;
+1EF : 47C00693;
+1F0 : 080C864A;
+1F1 : 2A118552;
+1F2 : 7179BFE1;
+1F3 : 499CCC52;
+1F4 : 45988A3A;
+1F5 : D04AD422;
+1F6 : CA56CE4E;
+1F7 : D226D606;
+1F8 : C65EC85A;
+1F9 : 842E89AA;
+1FA : 8AB68932;
+1FB : 00E7D363;
+1FC : 202387BA;
+1FD : 470300F9;
+1FE : C7010434;
+1FF : 20230785;
+200 : 401C00F9;
+201 : 0207F793;
+202 : 2783C791;
+203 : 07890009;
+204 : 00F92023;
+205 : 88994004;
+206 : 0B13E891;
+207 : 5BFD0194;
+208 : 2703445C;
+209 : 8F990009;
+20A : 04F4CC63;
+20B : 04344783;
+20C : 00F036B3;
+20D : F793401C;
+20E : EBA50207;
+20F : 04340613;
+210 : 854E85D6;
+211 : 57FD9A02;
+212 : 04F50363;
+213 : 4711401C;
+214 : 8B994481;
+215 : 00E79963;
+216 : 27834444;
+217 : 8C9D0009;
+218 : 0004D363;
+219 : 441C4481;
+21A : 54634818;
+21B : 8F9900F7;
+21C : 490194BE;
+21D : 5B7D0469;
+21E : 05249863;
+21F : A8094501;
+220 : 865A4685;
+221 : 854E85D6;
+222 : 1E639A02;
+223 : 557D0175;
+224 : 542250B2;
+225 : 59025492;
+226 : 4A6249F2;
+227 : 4B424AD2;
+228 : 61454BB2;
+229 : 04858082;
+22A : 0733BFA5;
+22B : 061300D4;
+22C : 01A30300;
+22D : 470304C7;
+22E : 87930454;
+22F : 97A20016;
+230 : 81A30689;
+231 : BF9D04E7;
+232 : 86224685;
+233 : 854E85D6;
+234 : 0EE39A02;
+235 : 0905FB65;
+236 : 7179B745;
+237 : D226D422;
+238 : CE4ED04A;
+239 : CC52D606;
+23A : C85ACA56;
+23B : 0185C883;
+23C : 07800793;
+23D : 842E84AA;
+23E : 89B68932;
+23F : 0117EE63;
+240 : 06200793;
+241 : 04358693;
+242 : 0117ED63;
+243 : 1A088963;
+244 : 05800793;
+245 : 16F88B63;
+246 : 04240A93;
+247 : 05140123;
+248 : 8793A805;
+249 : F793F9D8;
+24A : 46550FF7;
+24B : FEF666E3;
+24C : 078A6605;
+24D : F5860613;
+24E : 439C97B2;
+24F : 431C8782;
+250 : 04258A93;
+251 : 00478693;
+252 : C314439C;
+253 : 04F58123;
+254 : AA494785;
+255 : 4308419C;
+256 : 0807F613;
+257 : 00450593;
+258 : 411CC205;
+259 : 6805C30C;
+25A : 0007D863;
+25B : 02D00713;
+25C : 40F007B3;
+25D : 04E401A3;
+25E : F3080813;
+25F : A0994729;
+260 : 0407F613;
+261 : C30C411C;
+262 : 07C2DE79;
+263 : BFE187C1;
+264 : 431C4190;
+265 : 08067513;
+266 : 00478593;
+267 : C30CC501;
+268 : A039439C;
+269 : 04067613;
+26A : DA7DC30C;
+26B : 0007D783;
+26C : 07136805;
+26D : 081306F0;
+26E : 8C63F308;
+26F : 47290CE8;
+270 : 040401A3;
+271 : C4104050;
+272 : 00064563;
+273 : 99ED400C;
+274 : E399C00C;
+275 : CE198AB6;
+276 : F6338AB6;
+277 : 1AFD02E7;
+278 : 46039642;
+279 : 80230006;
+27A : 863E00CA;
+27B : 02E7D7B3;
+27C : FEE675E3;
+27D : 1E6347A1;
+27E : 401C00F7;
+27F : CB918B85;
+280 : 481C4058;
+281 : 00E7C763;
+282 : 03000793;
+283 : FEFA8FA3;
+284 : 86B31AFD;
+285 : C8144156;
+286 : 86CA874E;
+287 : 85A20070;
+288 : 33658526;
+289 : 13635A7D;
+28A : 557D0D45;
+28B : 542250B2;
+28C : 59025492;
+28D : 4A6249F2;
+28E : 4B424AD2;
+28F : 80826145;
+290 : E793419C;
+291 : C19C0207;
+292 : 08936805;
+293 : 08130780;
+294 : 02A3F448;
+295 : 40100514;
+296 : 7513430C;
+297 : 419C0806;
+298 : E5110591;
+299 : 04067513;
+29A : 07C2C119;
+29B : C30C83C1;
+29C : 00167713;
+29D : 6613C701;
+29E : C0100206;
+29F : F3A94741;
+2A0 : 76134010;
+2A1 : C010FDF6;
+2A2 : 6805BF25;
+2A3 : F3080813;
+2A4 : 4721B7C9;
+2A5 : 4190B735;
+2A6 : 49CC431C;
+2A7 : 08067813;
+2A8 : 00478513;
+2A9 : 00080663;
+2AA : 439CC308;
+2AB : A801C38C;
+2AC : 7613C308;
+2AD : 439C0406;
+2AE : 9023DA75;
+2AF : 282300B7;
+2B0 : 8AB60004;
+2B1 : 431CBF91;
+2B2 : 458141D0;
+2B3 : 00478693;
+2B4 : AA83C314;
+2B5 : 85560007;
+2B6 : C50128A9;
+2B7 : 41550533;
+2B8 : 405CC048;
+2B9 : 01A3C81C;
+2BA : B73D0404;
+2BB : 86564814;
+2BC : 852685CA;
+2BD : 0AE39982;
+2BE : 401CF345;
+2BF : E78D8B89;
+2C0 : 444847B2;
+2C1 : F2F554E3;
+2C2 : B70D853E;
+2C3 : 86564685;
+2C4 : 852685CA;
+2C5 : 0AE39982;
+2C6 : 0A05F165;
+2C7 : 4732445C;
+2C8 : 45E38F99;
+2C9 : BFE9FEFA;
+2CA : 0A934A01;
+2CB : 5B7D0194;
+2CC : F593B7F5;
+2CD : 962A0FF5;
+2CE : 00C51463;
+2CF : 80824501;
+2D0 : 00054783;
+2D1 : FEB78DE3;
+2D2 : B7FD0505;
+2D3 : CA09832A;
+2D4 : 00058383;
+2D5 : 00730023;
+2D6 : 0305167D;
+2D7 : FA6D0585;
+2D8 : C2158082;
+2D9 : 4685832A;
+2DA : 00B56763;
+2DB : 071356FD;
+2DC : 933AFFF6;
+2DD : 838395BA;
+2DE : 00230005;
+2DF : 167D0073;
+2E0 : 95B69336;
+2E1 : 8082FA6D;
+2E2 : A783CDD1;
+2E3 : 1101FFC5;
+2E4 : CE06CC22;
+2E5 : FFC58413;
+2E6 : 0007D363;
+2E7 : C62A943E;
+2E8 : A7832ADD;
+2E9 : 45328741;
+2EA : 2223EB89;
+2EB : AA230004;
+2EC : 44628681;
+2ED : 610540F2;
+2EE : 7D63A2C5;
+2EF : 401000F4;
+2F0 : 00C406B3;
+2F1 : 00D79663;
+2F2 : 43DC4394;
+2F3 : C01496B2;
+2F4 : BFF1C05C;
+2F5 : 43DC873E;
+2F6 : 7DE3C399;
+2F7 : 4314FEF4;
+2F8 : 00D70633;
+2F9 : 00861F63;
+2FA : 96B24010;
+2FB : 0633C314;
+2FC : 90E300D7;
+2FD : 4390FCC7;
+2FE : 96B243DC;
+2FF : C35CC314;
+300 : 7563BF4D;
+301 : 47B100C4;
+302 : B765C11C;
+303 : 06B34010;
+304 : 966300C4;
+305 : 439400D7;
+306 : 96B243DC;
+307 : C05CC014;
+308 : BF41C340;
+309 : 11018082;
+30A : 8493CA26;
+30B : 98F10035;
+30C : CE06C84A;
+30D : C64ECC22;
+30E : 47B104A1;
+30F : F263892A;
+310 : 44B104F4;
+311 : 04B4E163;
+312 : 22B1854A;
+313 : 87418713;
+314 : 86934318;
+315 : 843A8741;
+316 : 8413E031;
+317 : 401C8781;
+318 : 4581E789;
+319 : 2219854A;
+31A : 85A6C008;
+31B : 28FD854A;
+31C : 186359FD;
+31D : 47B10735;
+31E : 00F92023;
+31F : 2A29854A;
+320 : D1E3A031;
+321 : 47B1FC04;
+322 : 00F92023;
+323 : 40F24501;
+324 : 44D24462;
 325 : 49B24942;
-326 : 85264A22;
-327 : 610544D2;
-328 : 8A2A8082;
-329 : 2085892E;
-32A : 676389AA;
-32B : 57930085;
-32C : 84CA0015;
-32D : FC87EEE3;
-32E : 855285A2;
-32F : 84AA3DD9;
-330 : 8622D961;
-331 : 0089F363;
-332 : 85CA864E;
-333 : 33ED8526;
-334 : 855285CA;
-335 : BF6D3505;
-336 : C4221141;
-337 : 842AC226;
-338 : C606852E;
-339 : 8601AE23;
-33A : 57FD280D;
-33B : 00F51663;
-33C : 87C1A783;
-33D : C01CC391;
-33E : 442240B2;
-33F : 01414492;
-340 : 80828082;
-341 : A7838082;
-342 : 8513FFC5;
-343 : D563FFC7;
-344 : 95AA0007;
-345 : 953E419C;
-346 : 87938082;
-347 : 439C8801;
-348 : C6061141;
-349 : 871386AA;
-34A : E38D8801;
-34B : 0D600893;
-34C : 00734501;
-34D : 57FD0000;
-34E : 00F51963;
-34F : 47B12025;
-350 : 557DC11C;
-351 : 014140B2;
-352 : C3088082;
-353 : 0893431C;
-354 : 96BE0D60;
-355 : 00738536;
-356 : 11E30000;
-357 : C308FED5;
-358 : B7CD853E;
-359 : 8641A503;
-35A : 00008082;
-35B : 70250A0D;
-35C : 72203A20;
-35D : 20646165;
-35E : 78383025;
-35F : 70786520;
-360 : 65746365;
-361 : 30252064;
-362 : 0A0D7838;
-363 : 00000000;
-364 : 706F6F4C;
-365 : 25203A73;
-366 : 65202C75;
-367 : 726F7272;
-368 : 203D2073;
-369 : 0A0D7525;
-36A : 0000000A;
-36B : 74736554;
-36C : 20676E69;
-36D : 41524453;
-36E : 7266204D;
-36F : 30206D6F;
-370 : 38302578;
-371 : 6F742078;
-372 : 25783020;
-373 : 2C783830;
-374 : 72747320;
-375 : 20656469;
-376 : 30257830;
-377 : 2E2E7838;
-378 : 000A0D2E;
-379 : 65520A0D;
-37A : 6E696461;
-37B : 61622067;
-37C : 74206B63;
-37D : 6863206F;
-37E : 206B6365;
-37F : 20726F66;
-380 : 61696C61;
-381 : 2E736573;
-382 : 0A0D2E2E;
-383 : 00000000;
-384 : 5244530D;
-385 : 74204D41;
-386 : 20747365;
-387 : 706D6F63;
-388 : 6574656C;
-389 : 6974202C;
-38A : 3D20656D;
-38B : 20752520;
-38C : 0A0D736D;
-38D : 00000000;
-38E : 325B1B0C;
-38F : 485B1B4A;
-390 : 202A2A2A;
-391 : 6C6C6548;
-392 : 57202C6F;
-393 : 646C726F;
-394 : 2A2A2021;
-395 : 460A0D2A;
-396 : 776D7269;
-397 : 20657261;
-398 : 706D6F63;
-399 : 64656C69;
-39A : 3A6E6F20;
-39B : 70655320;
-39C : 20383220;
-39D : 31323032;
-39E : 3A313220;
-39F : 303A3733;
-3A0 : 0A0A0D34;
-3A1 : 00000000;
-3A2 : 2B302D23;
-3A3 : 00000020;
-3A4 : 004C6C68;
-3A5 : 45676665;
-3A6 : 00004746;
-3A7 : 33323130;
-3A8 : 37363534;
-3A9 : 42413938;
-3AA : 46454443;
-3AB : 00000000;
-3AC : 33323130;
-3AD : 37363534;
-3AE : 62613938;
-3AF : 66656463;
-3B0 : 00000000;
-3B1 : 000008AA;
-3B2 : 000008C0;
-3B3 : 00000884;
-3B4 : 00000884;
-3B5 : 00000884;
-3B6 : 00000884;
-3B7 : 000008C0;
-3B8 : 00000884;
-3B9 : 00000884;
-3BA : 00000884;
-3BB : 00000884;
-3BC : 00000A02;
-3BD : 000008FC;
-3BE : 000009AC;
-3BF : 00000884;
-3C0 : 00000884;
-3C1 : 00000A32;
-3C2 : 00000884;
-3C3 : 000008FC;
-3C4 : 00000884;
-3C5 : 00000884;
-3C6 : 000009B4;
-3C7 : 00000000;
-3C8 : 00000000;
-3C9 : 00000218;
-3CA : 000001EA;
-3CB : 00000000;
-3CC : 00000000;
-3CD : 00000000;
-3CE : 00000000;
-3CF : 00000000;
+326 : 80826105;
+327 : 8F85401C;
+328 : 0207CE63;
+329 : 7663462D;
+32A : C01C00F6;
+32B : C004943E;
+32C : 405CA029;
+32D : 02871263;
+32E : 854AC29C;
+32F : 051328F1;
+330 : 079300B4;
+331 : 99610044;
+332 : 40F50733;
+333 : FCF501E3;
+334 : 8F89943A;
+335 : BF65C01C;
+336 : B7C5C35C;
+337 : 40408722;
+338 : 0413BFA5;
+339 : 98710035;
+33A : FC8503E3;
+33B : 40A405B3;
+33C : 28AD854A;
+33D : FB351DE3;
+33E : 1101BFBD;
+33F : CE06CC22;
+340 : C84ACA26;
+341 : C452C64E;
+342 : E9918432;
+343 : 40F24462;
+344 : 494244D2;
+345 : 4A2249B2;
+346 : 610585B2;
+347 : EE01B729;
+348 : 448135A5;
+349 : 446240F2;
+34A : 49B24942;
+34B : 85264A22;
+34C : 610544D2;
+34D : 8A2A8082;
+34E : 2085892E;
+34F : 676389AA;
+350 : 57930085;
+351 : 84CA0015;
+352 : FC87EEE3;
+353 : 855285A2;
+354 : 84AA3DD9;
+355 : 8622D961;
+356 : 0089F363;
+357 : 85CA864E;
+358 : 33ED8526;
+359 : 855285CA;
+35A : BF6D3505;
+35B : C4221141;
+35C : 842AC226;
+35D : C606852E;
+35E : 8601AE23;
+35F : 57FD280D;
+360 : 00F51663;
+361 : 87C1A783;
+362 : C01CC391;
+363 : 442240B2;
+364 : 01414492;
+365 : 80828082;
+366 : A7838082;
+367 : 8513FFC5;
+368 : D563FFC7;
+369 : 95AA0007;
+36A : 953E419C;
+36B : 87938082;
+36C : 439C8801;
+36D : C6061141;
+36E : 871386AA;
+36F : E38D8801;
+370 : 0D600893;
+371 : 00734501;
+372 : 57FD0000;
+373 : 00F51963;
+374 : 47B12025;
+375 : 557DC11C;
+376 : 014140B2;
+377 : C3088082;
+378 : 0893431C;
+379 : 96BE0D60;
+37A : 00738536;
+37B : 11E30000;
+37C : C308FED5;
+37D : B7CD853E;
+37E : 8641A503;
+37F : 00008082;
+380 : 70250A0D;
+381 : 72203A20;
+382 : 20646165;
+383 : 78383025;
+384 : 70786520;
+385 : 65746365;
+386 : 30252064;
+387 : 0A0D7838;
+388 : 00000000;
+389 : 706F6F4C;
+38A : 25203A73;
+38B : 65202C75;
+38C : 726F7272;
+38D : 203D2073;
+38E : 0A0D7525;
+38F : 0000000A;
+390 : 74736554;
+391 : 20676E69;
+392 : 41524453;
+393 : 7266204D;
+394 : 30206D6F;
+395 : 38302578;
+396 : 6F742078;
+397 : 25783020;
+398 : 2C783830;
+399 : 72747320;
+39A : 20656469;
+39B : 30257830;
+39C : 2E2E7838;
+39D : 000A0D2E;
+39E : 65520A0D;
+39F : 6E696461;
+3A0 : 61622067;
+3A1 : 74206B63;
+3A2 : 6863206F;
+3A3 : 206B6365;
+3A4 : 20726F66;
+3A5 : 61696C61;
+3A6 : 2E736573;
+3A7 : 0A0D2E2E;
+3A8 : 00000000;
+3A9 : 5244530D;
+3AA : 74204D41;
+3AB : 20747365;
+3AC : 706D6F63;
+3AD : 6574656C;
+3AE : 6974202C;
+3AF : 3D20656D;
+3B0 : 20752520;
+3B1 : 0A0D736D;
+3B2 : 00000000;
+3B3 : 325B1B0C;
+3B4 : 485B1B4A;
+3B5 : 202A2A2A;
+3B6 : 6C6C6548;
+3B7 : 57202C6F;
+3B8 : 646C726F;
+3B9 : 2A2A2021;
+3BA : 460A0D2A;
+3BB : 776D7269;
+3BC : 20657261;
+3BD : 706D6F63;
+3BE : 64656C69;
+3BF : 3A6E6F20;
+3C0 : 70655320;
+3C1 : 20303320;
+3C2 : 31323032;
+3C3 : 3A383120;
+3C4 : 303A3932;
+3C5 : 0A0A0D33;
+3C6 : 00000000;
+3C7 : 2B302D23;
+3C8 : 00000020;
+3C9 : 004C6C68;
+3CA : 45676665;
+3CB : 00004746;
+3CC : 33323130;
+3CD : 37363534;
+3CE : 42413938;
+3CF : 46454443;
 3D0 : 00000000;
-3D1 : 00000000;
-3D2 : 00000000;
-3D3 : 00000000;
-3D4 : 00000000;
+3D1 : 33323130;
+3D2 : 37363534;
+3D3 : 62613938;
+3D4 : 66656463;
 3D5 : 00000000;
-3D6 : 00000000;
-3D7 : 00000000;
-3D8 : 00000000;
-3D9 : 00000000;
-3DA : 00000000;
-3DB : 00000000;
-3DC : 00000000;
-3DD : 00000000;
-3DE : 00000000;
-3DF : 00000000;
-3E0 : 00000000;
-3E1 : 00000000;
-3E2 : 00000000;
-3E3 : 00000004;
-3E4 : 00000F2C;
-[3E5..7FF] : 00;
+3D6 : 0000093E;
+3D7 : 00000954;
+3D8 : 00000918;
+3D9 : 00000918;
+3DA : 00000918;
+3DB : 00000918;
+3DC : 00000954;
+3DD : 00000918;
+3DE : 00000918;
+3DF : 00000918;
+3E0 : 00000918;
+3E1 : 00000A96;
+3E2 : 00000990;
+3E3 : 00000A40;
+3E4 : 00000918;
+3E5 : 00000918;
+3E6 : 00000AC6;
+3E7 : 00000918;
+3E8 : 00000990;
+3E9 : 00000918;
+3EA : 00000918;
+3EB : 00000A48;
+3EC : 00000000;
+3ED : 00000284;
+3EE : 00000256;
+3EF : 00000000;
+3F0 : 00000000;
+3F1 : 00000000;
+3F2 : 00000000;
+3F3 : 00000000;
+3F4 : 00000000;
+3F5 : 00000000;
+3F6 : 00000000;
+3F7 : 00000000;
+3F8 : 00000000;
+3F9 : 00000000;
+3FA : 00000000;
+3FB : 00000000;
+3FC : 00000000;
+3FD : 00000000;
+3FE : 00000000;
+3FF : 00000000;
+400 : 00000000;
+401 : 00000000;
+402 : 00000000;
+403 : 00000000;
+404 : 00000000;
+405 : 00000000;
+406 : 00000000;
+407 : 00000004;
+408 : 00000FBC;
+[409..7FF] : 00;
 END;

+ 23 - 0
fw/die.c

@@ -0,0 +1,23 @@
+/*
+ * Die while blinking LEDs
+ */
+
+#include "fw.h"
+#include "io.h"
+
+void _die(void)
+{
+    unsigned int led = 2;
+
+    while (1) {
+	set_led(led);
+	led ^= 7;
+	udelay(250000);
+    }
+}
+
+/* We never exit, so don't bother carrying a bunch of crap with it */
+#pragma GCC diagnostic ignored "-Wattribute-alias"
+void _exit(int) __attribute__((alias("_die")));
+void exit(int) __attribute__((alias("_die")));
+void _irq(void) __attribute__((weak,alias("_die")));

+ 9 - 0
fw/fw.h

@@ -0,0 +1,9 @@
+#ifndef FW_H
+#define FW_H
+
+#include <stddef.h>
+#include <stdint.h>
+
+extern void __attribute__((noreturn)) _die(void);
+
+#endif /* FW_H */

+ 43 - 10
fw/head.S

@@ -1,4 +1,5 @@
 #include "sys.h"
+#include "picorv32.h"
 
 	// The linker ensures that section .init is first
 	.section ".init","ax"
@@ -9,14 +10,46 @@ _reset:
 	j _start
 
 	.org 0x10
-	.globl _irq
-_irq:
-	j _die		// Nothing for now
+	.globl __irq
+__irq:
+	add sp,sp,-64
+	sw ra,0(sp)
+	sw t0,4(sp)
+	sw t1,8(sp)
+	sw t2,12(sp)
+	sw t3,16(sp)
+	sw t4,20(sp)
+	sw t5,24(sp)
+	sw t6,28(sp)
+	sw a0,32(sp)
+	sw a1,36(sp)
+	sw a2,40(sp)
+	sw a3,44(sp)
+	sw a4,48(sp)
+	sw a5,52(sp)
+	sw a6,56(sp)
+	sw a7,60(sp)
 
-	.globl _die
-	.globl _exit
-	.globl exit
-exit:
-_exit:
-_die:
-	j _die
+	getq a0,q1
+
+	jal _irq
+
+	lw ra,0(sp)
+	lw t0,4(sp)
+	lw t1,8(sp)
+	lw t2,12(sp)
+	lw t3,16(sp)
+	lw t4,20(sp)
+	lw t5,24(sp)
+	lw t6,28(sp)
+	lw a0,32(sp)
+	lw a1,36(sp)
+	lw a2,40(sp)
+	lw a3,44(sp)
+	lw a4,48(sp)
+	lw a5,52(sp)
+	lw a6,56(sp)
+	lw a7,60(sp)
+
+	add sp,sp,64
+	retirq

+ 12 - 14
fw/hello.c

@@ -1,6 +1,4 @@
-#include <stddef.h>
-#include <stdint.h>
-
+#include "fw.h"
 #include "io.h"
 #include "console.h"
 
@@ -42,19 +40,18 @@ static inline void write_check(volatile uint32_t *p, uint32_t v)
 
 static void test_sdram(void)
 {
+    const unsigned int sdram_words = SDRAM_SIZE >> 2;
     static unsigned int stride = 4;
     uint32_t start_time = rdtime();
     uint32_t w = 0;
     uint32_t n;
-
     
     con_printf("Testing SDRAM from 0x%08x to 0x%08x, stride 0x%08x...\r\n",
 	       SDRAM_ADDR, SDRAM_END, stride);
 
-    n = 0;
     err_char = '-';
     rate_limit = ERROR_RATELIMIT;
-    do {
+    for (n = 1, w = 0; n <= sdram_words; n++) {
 	uint32_t a = w + SDRAM_ADDR;
 	volatile uint32_t *p = (volatile uint32_t *)a;
 
@@ -64,36 +61,37 @@ static void test_sdram(void)
 	write_check(p, w);
 	write_check(p, A*w + B);
 
-	if (!(++n & 0x3ffff)) {
+	if (!(n & 0x3ffff)) {
 	    CONSOLE = err_char;
 	    err_char = '-';
 	}
 	
 	w = (w + stride) & SDRAM_MASK;
-    } while (w);
+    }
 
     con_puts("\r\nReading back to check for aliases...\r\n");
 	
     rate_limit = ERROR_RATELIMIT;
-    do {
+    for (n = 1, w = 0; n <= sdram_words; n++) {
 	uint32_t a = w + SDRAM_ADDR;
 	volatile uint32_t *p = (volatile uint32_t *)a;
 
 	data_check(p, A*w + B);
 
-	if (!(++n & 0x3ffff)) {
+	if (!(n & 0x3ffff)) {
 	    CONSOLE = err_char;
 	    err_char = '-';
 	}
 
 	w = (w - stride) & SDRAM_MASK;
-    } while (w);
+    }
 
     con_printf("\rSDRAM test complete, time = %u ms\r\n",
 	       (rdtime() - start_time)/(CPU_CLK_HZ/1000));
 
     stride *= 3;
-    stride = ((stride & SDRAM_MASK) ^ (stride >> (SDRAM_ADDR_BITS-2))) & ~3;
+    stride = (stride & SDRAM_MASK) ^ (stride >> (SDRAM_ADDR_BITS-2));
+    stride = (stride & ~3) | 4;
 }
 
 void main(void)
@@ -102,9 +100,9 @@ void main(void)
 	"*** Hello, World! ***\r\n"
 	"Firmware compiled on: " __DATE__ " " __TIME__ "\r\n\n";
     uint8_t led = 0;
-    uint8_t loops;
+    unsigned int loops;
 
-    con_set_baudrate(115200);
+    con_set_baudrate(2000000);
     set_led(led = 0);
 
     while ( 1 ) {

+ 82 - 0
fw/picorv32.h

@@ -0,0 +1,82 @@
+#ifndef PICORV32_H
+#define PICORV32_H
+
+#ifndef __ASSEMBLY__
+
+static inline unsigned int p_getq(unsigned int qr)
+{
+    unsigned int rd;
+    asm volatile(".insn r 0x0b, 0, 0, %0, x%1, zero"
+		 : "=r" (rd) : "K" (qr));
+    return rd;
+}
+
+static inline void p_setq(unsigned int qr, unsigned int val)
+{
+    asm volatile(".insn r 0x0b, 0, 1, x%1, %0, zero"
+		 : : "r" (val), "K" (qr));
+}
+
+static inline void p_retirq(void)
+{
+    asm volatile(".insn r 0x0b, 0, 2, zero, zero, zero");
+    __builtin_unreachable();
+}
+
+static inline unsigned int p_maskirq(unsigned int newmask)
+{
+    unsigned int oldmask;
+    asm volatile(".insn r 0x0b, 0, 3, %0, %1, zero"
+		 : "=r" (oldmask) : "r" (newmask));
+    return oldmask;
+}
+
+static inline unsigned int p_waitirq(void)
+{
+    unsigned int pending_mask;
+    asm volatile(".insn r 0x0b, 0, 4, %0, zero, zero"
+		 : "=r" (pending_mask));
+    return pending_mask;
+}
+
+static inline unsigned int p_timer(unsigned int newval)
+{
+    unsigned int oldval;
+    asm volatile(".insn 0x0b, 0, 5, %0, %1, zero"
+		 : "=r" (oldval) : "r" (newval));
+}
+
+#else  /* __ASSEMBLY__ */
+
+#define q0 x0
+#define q1 x1
+#define q2 x2
+#define q3 x3
+
+.macro getq rd, qs
+	.insn r 0x0b, 0, 0, \rd, \qs, zero
+.endm
+
+.macro setq qd, rs
+	.insn r 0x0b, 0, 1, \qd, \rs, zero
+.endm
+
+.macro retirq
+	.insn r 0x0b, 0, 2, zero, zero, zero
+.endm
+
+.macro maskirq rd, rs
+	.insn r 0x0b, 0, 3, \rd, \rs, zero
+.endm
+
+.macro waitirq rd
+	.insn r 0x0b, 0, 4, \rd, zero, zero
+.endm
+
+.macro timer rd, rs
+	.insn r 0x0b, 0, 5, \rd, \rs, zero
+.endm
+
+#endif /* __ASSEMBLY__ */
+
+#endif /* PICORV32_H */

部分文件因为文件数量过多而无法显示