diff --git a/driver/tests/tex_demo/color.h b/driver/tests/tex_demo/color.h index 319ccd9b..708565a3 100644 --- a/driver/tests/tex_demo/color.h +++ b/driver/tests/tex_demo/color.h @@ -62,10 +62,7 @@ struct ColorARGB { this->value = rhs.value; } - uint32_t toRGBA() const { - // swap B/R channels - return (this->value & 0xff00ff00) - | ((this->value >> 16) & 0xff) - | ((this->value & 0xff) << 16); + operator uint32_t() const { + return this->value; } }; \ No newline at end of file diff --git a/driver/tests/tex_demo/demo b/driver/tests/tex_demo/demo index dfc9944f..9f9bfc7a 100755 Binary files a/driver/tests/tex_demo/demo and b/driver/tests/tex_demo/demo differ diff --git a/driver/tests/tex_demo/kernel.bin b/driver/tests/tex_demo/kernel.bin index c45a9ed5..8ee38e84 100755 Binary files a/driver/tests/tex_demo/kernel.bin and b/driver/tests/tex_demo/kernel.bin differ diff --git a/driver/tests/tex_demo/kernel.c b/driver/tests/tex_demo/kernel.c index 554a4aee..8e4dbf28 100644 --- a/driver/tests/tex_demo/kernel.c +++ b/driver/tests/tex_demo/kernel.c @@ -20,11 +20,10 @@ void kernel_body(int task_id, void* arg) { uint32_t yoffset = task_id * _arg->tile_height; uint8_t* dst_ptr = (uint8_t*)(_arg->karg.dst_ptr + xoffset * _arg->karg.dst_stride + yoffset * _arg->karg.dst_pitch); - float fu = xoffset * _arg->deltaX; float fv = yoffset * _arg->deltaY; - for (uint32_t y = 0; y < _arg->tile_height; ++y) { uint32_t* dst_row = (uint32_t*)dst_ptr; + float fu = xoffset * _arg->deltaX; for (uint32_t x = 0; x < _arg->tile_width; ++x) { int32_t u = (int32_t)(fu * (1<<20)); int32_t v = (int32_t)(fv * (1<<20)); diff --git a/driver/tests/tex_demo/kernel.dump b/driver/tests/tex_demo/kernel.dump index 70d6d534..b03f2f87 100644 --- a/driver/tests/tex_demo/kernel.dump +++ b/driver/tests/tex_demo/kernel.dump @@ -6,10 +6,10 @@ Disassembly of section .init: 80000000 <_start>: 80000000: 00000597 auipc a1,0x0 -80000004: 23458593 addi a1,a1,564 # 80000234 +80000004: 23858593 addi a1,a1,568 # 80000238 80000008: fc102573 csrr a0,0xfc1 8000000c: 00b5106b 0xb5106b -80000010: 224000ef jal ra,80000234 +80000010: 228000ef jal ra,80000238 80000014: 00100513 li a0,1 80000018: 0005006b 0x5006b 8000001c: 00002517 auipc a0,0x2 @@ -18,13 +18,13 @@ Disassembly of section .init: 80000028: e3860613 addi a2,a2,-456 # 80001e5c <__BSS_END__> 8000002c: 40a60633 sub a2,a2,a0 80000030: 00000593 li a1,0 -80000034: 5d0000ef jal ra,80000604 +80000034: 5d4000ef jal ra,80000608 80000038: 00000517 auipc a0,0x0 -8000003c: 4d450513 addi a0,a0,1236 # 8000050c <__libc_fini_array> -80000040: 484000ef jal ra,800004c4 -80000044: 524000ef jal ra,80000568 <__libc_init_array> +8000003c: 4d850513 addi a0,a0,1240 # 80000510 <__libc_fini_array> +80000040: 488000ef jal ra,800004c8 +80000044: 528000ef jal ra,8000056c <__libc_init_array> 80000048: 008000ef jal ra,80000050
-8000004c: 48c0006f j 800004d8 +8000004c: 4900006f j 800004dc Disassembly of section .text: @@ -41,13 +41,13 @@ Disassembly of section .text: 80000074: 01f00493 li s1,31 80000078: 00151513 slli a0,a0,0x1 8000007c: fff50513 addi a0,a0,-1 -80000080: 3f8000ef jal ra,80000478 <__clzsi2> +80000080: 3fc000ef jal ra,8000047c <__clzsi2> 80000084: 40a48533 sub a0,s1,a0 80000088: fd551073 csrw 0xfd5,a0 8000008c: 01442503 lw a0,20(s0) 80000090: 00151513 slli a0,a0,0x1 80000094: fff50513 addi a0,a0,-1 -80000098: 3e0000ef jal ra,80000478 <__clzsi2> +80000098: 3e4000ef jal ra,8000047c <__clzsi2> 8000009c: 40a484b3 sub s1,s1,a0 800000a0: fd649073 csrw 0xfd6,s1 800000a4: 00442783 lw a5,4(s0) @@ -96,7 +96,7 @@ Disassembly of section .text: 80000150: 04f12427 fsw fa5,72(sp) 80000154: 04f12223 sw a5,68(sp) 80000158: 04e12627 fsw fa4,76(sp) -8000015c: 1d4000ef jal ra,80000330 +8000015c: 1d8000ef jal ra,80000334 80000160: 05c12083 lw ra,92(sp) 80000164: 05812403 lw s0,88(sp) 80000168: 05412483 lw s1,84(sp) @@ -107,8 +107,8 @@ Disassembly of section .text: 80000174: 00000793 li a5,0 80000178: 00078863 beqz a5,80000188 8000017c: 80000537 lui a0,0x80000 -80000180: 50c50513 addi a0,a0,1292 # 8000050c <__stack_top+0x8100050c> -80000184: 3400006f j 800004c4 +80000180: 51050513 addi a0,a0,1296 # 80000510 <__stack_top+0x81000510> +80000184: 3440006f j 800004c8 80000188: 00008067 ret 8000018c : @@ -116,502 +116,501 @@ Disassembly of section .text: 80000190: 0305a683 lw a3,48(a1) 80000194: 0345a603 lw a2,52(a1) 80000198: 02e507b3 mul a5,a0,a4 -8000019c: 0405a687 flw fa3,64(a1) -800001a0: 0445a507 flw fa0,68(a1) -800001a4: f00007d3 fmv.w.x fa5,zero -800001a8: 10f6f7d3 fmul.s fa5,fa3,fa5 -800001ac: 02f68833 mul a6,a3,a5 -800001b0: d017f5d3 fcvt.s.wu fa1,a5 -800001b4: 10a5f5d3 fmul.s fa1,fa1,fa0 -800001b8: 00c80833 add a6,a6,a2 -800001bc: 06070663 beqz a4,80000228 -800001c0: 800027b7 lui a5,0x80002 -800001c4: dd07a007 flw ft0,-560(a5) # 80001dd0 <__stack_top+0x81001dd0> +8000019c: 0445a507 flw fa0,68(a1) +800001a0: 02f68833 mul a6,a3,a5 +800001a4: d017f5d3 fcvt.s.wu fa1,a5 +800001a8: 10a5f5d3 fmul.s fa1,fa1,fa0 +800001ac: 00c80833 add a6,a6,a2 +800001b0: 06070e63 beqz a4,8000022c +800001b4: 0405a687 flw fa3,64(a1) +800001b8: f0000053 fmv.w.x ft0,zero +800001bc: 800027b7 lui a5,0x80002 +800001c0: dd07a087 flw ft1,-560(a5) # 80001dd0 <__stack_top+0x81001dd0> +800001c4: 1006f053 fmul.s ft0,fa3,ft0 800001c8: 0385a783 lw a5,56(a1) -800001cc: 00000893 li a7,0 -800001d0: 20000653 fmv.s fa2,ft0 +800001cc: 20108653 fmv.s fa2,ft1 +800001d0: 00000893 li a7,0 800001d4: 00000513 li a0,0 -800001d8: 04078063 beqz a5,80000218 -800001dc: 1005f753 fmul.s fa4,fa1,ft0 -800001e0: 00080693 mv a3,a6 -800001e4: 00000713 li a4,0 -800001e8: c0071653 fcvt.w.s a2,fa4,rtz -800001ec: 10c7f753 fmul.s fa4,fa5,fa2 -800001f0: c00717d3 fcvt.w.s a5,fa4,rtz -800001f4: 50c7d7eb 0x50c7d7eb -800001f8: 00f6a023 sw a5,0(a3) -800001fc: 0385a783 lw a5,56(a1) -80000200: 00170713 addi a4,a4,1 -80000204: 00d7f7d3 fadd.s fa5,fa5,fa3 -80000208: 00468693 addi a3,a3,4 -8000020c: fef760e3 bltu a4,a5,800001ec -80000210: 0305a683 lw a3,48(a1) -80000214: 03c5a703 lw a4,60(a1) -80000218: 00188893 addi a7,a7,1 -8000021c: 00a5f5d3 fadd.s fa1,fa1,fa0 -80000220: 00d80833 add a6,a6,a3 -80000224: fae8eae3 bltu a7,a4,800001d8 -80000228: 00008067 ret +800001d8: 04078263 beqz a5,8000021c +800001dc: 1015f753 fmul.s fa4,fa1,ft1 +800001e0: 200007d3 fmv.s fa5,ft0 +800001e4: 00080693 mv a3,a6 +800001e8: 00000713 li a4,0 +800001ec: c0071653 fcvt.w.s a2,fa4,rtz +800001f0: 10c7f753 fmul.s fa4,fa5,fa2 +800001f4: c00717d3 fcvt.w.s a5,fa4,rtz +800001f8: 50c7d7eb 0x50c7d7eb +800001fc: 00f6a023 sw a5,0(a3) +80000200: 0385a783 lw a5,56(a1) +80000204: 00170713 addi a4,a4,1 +80000208: 00d7f7d3 fadd.s fa5,fa5,fa3 +8000020c: 00468693 addi a3,a3,4 +80000210: fef760e3 bltu a4,a5,800001f0 +80000214: 0305a683 lw a3,48(a1) +80000218: 03c5a703 lw a4,60(a1) +8000021c: 00188893 addi a7,a7,1 +80000220: 00a5f5d3 fadd.s fa1,fa1,fa0 +80000224: 00d80833 add a6,a6,a3 +80000228: fae8e8e3 bltu a7,a4,800001d8 +8000022c: 00008067 ret -8000022c <_exit>: -8000022c: 00000513 li a0,0 -80000230: 0005006b 0x5006b +80000230 <_exit>: +80000230: 00000513 li a0,0 +80000234: 0005006b 0x5006b -80000234 : -80000234: fc002573 csrr a0,0xfc0 -80000238: 0005006b 0x5006b -8000023c: 00002197 auipc gp,0x2 -80000240: f6c18193 addi gp,gp,-148 # 800021a8 <__global_pointer> -80000244: 7f000117 auipc sp,0x7f000 -80000248: dbc10113 addi sp,sp,-580 # ff000000 <__stack_top> -8000024c: 40000593 li a1,1024 -80000250: cc102673 csrr a2,0xcc1 -80000254: 02c585b3 mul a1,a1,a2 -80000258: 40b10133 sub sp,sp,a1 -8000025c: cc3026f3 csrr a3,0xcc3 -80000260: 00068663 beqz a3,8000026c -80000264: 00000513 li a0,0 -80000268: 0005006b 0x5006b +80000238 : +80000238: fc002573 csrr a0,0xfc0 +8000023c: 0005006b 0x5006b +80000240: 00002197 auipc gp,0x2 +80000244: f6818193 addi gp,gp,-152 # 800021a8 <__global_pointer> +80000248: 7f000117 auipc sp,0x7f000 +8000024c: db810113 addi sp,sp,-584 # ff000000 <__stack_top> +80000250: 40000593 li a1,1024 +80000254: cc102673 csrr a2,0xcc1 +80000258: 02c585b3 mul a1,a1,a2 +8000025c: 40b10133 sub sp,sp,a1 +80000260: cc3026f3 csrr a3,0xcc3 +80000264: 00068663 beqz a3,80000270 +80000268: 00000513 li a0,0 +8000026c: 0005006b 0x5006b -8000026c : -8000026c: 00008067 ret +80000270 : +80000270: 00008067 ret -80000270 : -80000270: fe010113 addi sp,sp,-32 -80000274: 00112e23 sw ra,28(sp) -80000278: 00812c23 sw s0,24(sp) -8000027c: 00912a23 sw s1,20(sp) -80000280: 01212823 sw s2,16(sp) -80000284: 01312623 sw s3,12(sp) -80000288: fc0027f3 csrr a5,0xfc0 -8000028c: 0007806b 0x7806b -80000290: cc5026f3 csrr a3,0xcc5 -80000294: cc3029f3 csrr s3,0xcc3 -80000298: cc002773 csrr a4,0xcc0 -8000029c: fc002673 csrr a2,0xfc0 -800002a0: 800027b7 lui a5,0x80002 -800002a4: 00269693 slli a3,a3,0x2 -800002a8: ddc78793 addi a5,a5,-548 # 80001ddc <__stack_top+0x81001ddc> -800002ac: 00d787b3 add a5,a5,a3 -800002b0: 0007a483 lw s1,0(a5) -800002b4: 0104a403 lw s0,16(s1) -800002b8: 00c4a683 lw a3,12(s1) -800002bc: 0089a933 slt s2,s3,s0 -800002c0: 00040793 mv a5,s0 -800002c4: 00d90933 add s2,s2,a3 -800002c8: 03368433 mul s0,a3,s3 -800002cc: 00f9d463 bge s3,a5,800002d4 -800002d0: 00098793 mv a5,s3 -800002d4: 00f40433 add s0,s0,a5 -800002d8: 0084a683 lw a3,8(s1) -800002dc: 02c40433 mul s0,s0,a2 -800002e0: 02e907b3 mul a5,s2,a4 -800002e4: 00d40433 add s0,s0,a3 -800002e8: 00f40433 add s0,s0,a5 -800002ec: 00890933 add s2,s2,s0 -800002f0: 01245e63 bge s0,s2,8000030c -800002f4: 0004a783 lw a5,0(s1) -800002f8: 0044a583 lw a1,4(s1) -800002fc: 00040513 mv a0,s0 -80000300: 00140413 addi s0,s0,1 -80000304: 000780e7 jalr a5 -80000308: fe8916e3 bne s2,s0,800002f4 -8000030c: 0019b993 seqz s3,s3 -80000310: 0009806b 0x9806b -80000314: 01c12083 lw ra,28(sp) -80000318: 01812403 lw s0,24(sp) -8000031c: 01412483 lw s1,20(sp) -80000320: 01012903 lw s2,16(sp) -80000324: 00c12983 lw s3,12(sp) -80000328: 02010113 addi sp,sp,32 -8000032c: 00008067 ret +80000274 : +80000274: fe010113 addi sp,sp,-32 +80000278: 00112e23 sw ra,28(sp) +8000027c: 00812c23 sw s0,24(sp) +80000280: 00912a23 sw s1,20(sp) +80000284: 01212823 sw s2,16(sp) +80000288: 01312623 sw s3,12(sp) +8000028c: fc0027f3 csrr a5,0xfc0 +80000290: 0007806b 0x7806b +80000294: cc5026f3 csrr a3,0xcc5 +80000298: cc3029f3 csrr s3,0xcc3 +8000029c: cc002773 csrr a4,0xcc0 +800002a0: fc002673 csrr a2,0xfc0 +800002a4: 800027b7 lui a5,0x80002 +800002a8: 00269693 slli a3,a3,0x2 +800002ac: ddc78793 addi a5,a5,-548 # 80001ddc <__stack_top+0x81001ddc> +800002b0: 00d787b3 add a5,a5,a3 +800002b4: 0007a483 lw s1,0(a5) +800002b8: 0104a403 lw s0,16(s1) +800002bc: 00c4a683 lw a3,12(s1) +800002c0: 0089a933 slt s2,s3,s0 +800002c4: 00040793 mv a5,s0 +800002c8: 00d90933 add s2,s2,a3 +800002cc: 03368433 mul s0,a3,s3 +800002d0: 00f9d463 bge s3,a5,800002d8 +800002d4: 00098793 mv a5,s3 +800002d8: 00f40433 add s0,s0,a5 +800002dc: 0084a683 lw a3,8(s1) +800002e0: 02c40433 mul s0,s0,a2 +800002e4: 02e907b3 mul a5,s2,a4 +800002e8: 00d40433 add s0,s0,a3 +800002ec: 00f40433 add s0,s0,a5 +800002f0: 00890933 add s2,s2,s0 +800002f4: 01245e63 bge s0,s2,80000310 +800002f8: 0004a783 lw a5,0(s1) +800002fc: 0044a583 lw a1,4(s1) +80000300: 00040513 mv a0,s0 +80000304: 00140413 addi s0,s0,1 +80000308: 000780e7 jalr a5 +8000030c: fe8916e3 bne s2,s0,800002f8 +80000310: 0019b993 seqz s3,s3 +80000314: 0009806b 0x9806b +80000318: 01c12083 lw ra,28(sp) +8000031c: 01812403 lw s0,24(sp) +80000320: 01412483 lw s1,20(sp) +80000324: 01012903 lw s2,16(sp) +80000328: 00c12983 lw s3,12(sp) +8000032c: 02010113 addi sp,sp,32 +80000330: 00008067 ret -80000330 : -80000330: fc010113 addi sp,sp,-64 -80000334: 02112e23 sw ra,60(sp) -80000338: 02812c23 sw s0,56(sp) -8000033c: 02912a23 sw s1,52(sp) -80000340: 03212823 sw s2,48(sp) -80000344: 03312623 sw s3,44(sp) -80000348: fc2026f3 csrr a3,0xfc2 -8000034c: fc102873 csrr a6,0xfc1 -80000350: fc002473 csrr s0,0xfc0 -80000354: cc5027f3 csrr a5,0xcc5 -80000358: 01f00713 li a4,31 -8000035c: 0cf74463 blt a4,a5,80000424 -80000360: 030408b3 mul a7,s0,a6 -80000364: 00100713 li a4,1 -80000368: 00a8d463 bge a7,a0,80000370 -8000036c: 03154733 div a4,a0,a7 -80000370: 0ce6c863 blt a3,a4,80000440 -80000374: 0ae7d863 bge a5,a4,80000424 -80000378: fff68693 addi a3,a3,-1 -8000037c: 02e54333 div t1,a0,a4 -80000380: 00030893 mv a7,t1 -80000384: 00f69663 bne a3,a5,80000390 -80000388: 02e56533 rem a0,a0,a4 -8000038c: 006508b3 add a7,a0,t1 -80000390: 0288c4b3 div s1,a7,s0 -80000394: 0288e933 rem s2,a7,s0 -80000398: 0b04ca63 blt s1,a6,8000044c -8000039c: 00100693 li a3,1 -800003a0: 0304c733 div a4,s1,a6 -800003a4: 00070663 beqz a4,800003b0 -800003a8: 00070693 mv a3,a4 -800003ac: 0304e733 rem a4,s1,a6 -800003b0: 800029b7 lui s3,0x80002 -800003b4: ddc98993 addi s3,s3,-548 # 80001ddc <__stack_top+0x81001ddc> -800003b8: 00e12e23 sw a4,28(sp) -800003bc: 00c10713 addi a4,sp,12 -800003c0: 00b12623 sw a1,12(sp) -800003c4: 00c12823 sw a2,16(sp) -800003c8: 00d12c23 sw a3,24(sp) -800003cc: 02f30333 mul t1,t1,a5 -800003d0: 00279793 slli a5,a5,0x2 -800003d4: 00f987b3 add a5,s3,a5 -800003d8: 00e7a023 sw a4,0(a5) -800003dc: 00612a23 sw t1,20(sp) -800003e0: 06904c63 bgtz s1,80000458 -800003e4: 04090063 beqz s2,80000424 -800003e8: 02848433 mul s0,s1,s0 -800003ec: 00812a23 sw s0,20(sp) -800003f0: 0009006b 0x9006b -800003f4: cc5027f3 csrr a5,0xcc5 -800003f8: cc202573 csrr a0,0xcc2 -800003fc: 00279793 slli a5,a5,0x2 -80000400: 00f989b3 add s3,s3,a5 -80000404: 0009a783 lw a5,0(s3) -80000408: 0087a683 lw a3,8(a5) -8000040c: 0007a703 lw a4,0(a5) -80000410: 0047a583 lw a1,4(a5) -80000414: 00d50533 add a0,a0,a3 -80000418: 000700e7 jalr a4 -8000041c: 00100793 li a5,1 -80000420: 0007806b 0x7806b -80000424: 03c12083 lw ra,60(sp) -80000428: 03812403 lw s0,56(sp) -8000042c: 03412483 lw s1,52(sp) -80000430: 03012903 lw s2,48(sp) -80000434: 02c12983 lw s3,44(sp) -80000438: 04010113 addi sp,sp,64 -8000043c: 00008067 ret -80000440: 00068713 mv a4,a3 -80000444: f2e7cae3 blt a5,a4,80000378 -80000448: fddff06f j 80000424 -8000044c: 00000713 li a4,0 -80000450: 00100693 li a3,1 -80000454: f5dff06f j 800003b0 -80000458: 00048713 mv a4,s1 -8000045c: 00985463 bge a6,s1,80000464 -80000460: 00080713 mv a4,a6 -80000464: 800007b7 lui a5,0x80000 -80000468: 27078793 addi a5,a5,624 # 80000270 <__stack_top+0x81000270> -8000046c: 00f7106b 0xf7106b -80000470: e01ff0ef jal ra,80000270 -80000474: f71ff06f j 800003e4 +80000334 : +80000334: fc010113 addi sp,sp,-64 +80000338: 02112e23 sw ra,60(sp) +8000033c: 02812c23 sw s0,56(sp) +80000340: 02912a23 sw s1,52(sp) +80000344: 03212823 sw s2,48(sp) +80000348: 03312623 sw s3,44(sp) +8000034c: fc2026f3 csrr a3,0xfc2 +80000350: fc102873 csrr a6,0xfc1 +80000354: fc002473 csrr s0,0xfc0 +80000358: cc5027f3 csrr a5,0xcc5 +8000035c: 01f00713 li a4,31 +80000360: 0cf74463 blt a4,a5,80000428 +80000364: 030408b3 mul a7,s0,a6 +80000368: 00100713 li a4,1 +8000036c: 00a8d463 bge a7,a0,80000374 +80000370: 03154733 div a4,a0,a7 +80000374: 0ce6c863 blt a3,a4,80000444 +80000378: 0ae7d863 bge a5,a4,80000428 +8000037c: fff68693 addi a3,a3,-1 +80000380: 02e54333 div t1,a0,a4 +80000384: 00030893 mv a7,t1 +80000388: 00f69663 bne a3,a5,80000394 +8000038c: 02e56533 rem a0,a0,a4 +80000390: 006508b3 add a7,a0,t1 +80000394: 0288c4b3 div s1,a7,s0 +80000398: 0288e933 rem s2,a7,s0 +8000039c: 0b04ca63 blt s1,a6,80000450 +800003a0: 00100693 li a3,1 +800003a4: 0304c733 div a4,s1,a6 +800003a8: 00070663 beqz a4,800003b4 +800003ac: 00070693 mv a3,a4 +800003b0: 0304e733 rem a4,s1,a6 +800003b4: 800029b7 lui s3,0x80002 +800003b8: ddc98993 addi s3,s3,-548 # 80001ddc <__stack_top+0x81001ddc> +800003bc: 00e12e23 sw a4,28(sp) +800003c0: 00c10713 addi a4,sp,12 +800003c4: 00b12623 sw a1,12(sp) +800003c8: 00c12823 sw a2,16(sp) +800003cc: 00d12c23 sw a3,24(sp) +800003d0: 02f30333 mul t1,t1,a5 +800003d4: 00279793 slli a5,a5,0x2 +800003d8: 00f987b3 add a5,s3,a5 +800003dc: 00e7a023 sw a4,0(a5) +800003e0: 00612a23 sw t1,20(sp) +800003e4: 06904c63 bgtz s1,8000045c +800003e8: 04090063 beqz s2,80000428 +800003ec: 02848433 mul s0,s1,s0 +800003f0: 00812a23 sw s0,20(sp) +800003f4: 0009006b 0x9006b +800003f8: cc5027f3 csrr a5,0xcc5 +800003fc: cc202573 csrr a0,0xcc2 +80000400: 00279793 slli a5,a5,0x2 +80000404: 00f989b3 add s3,s3,a5 +80000408: 0009a783 lw a5,0(s3) +8000040c: 0087a683 lw a3,8(a5) +80000410: 0007a703 lw a4,0(a5) +80000414: 0047a583 lw a1,4(a5) +80000418: 00d50533 add a0,a0,a3 +8000041c: 000700e7 jalr a4 +80000420: 00100793 li a5,1 +80000424: 0007806b 0x7806b +80000428: 03c12083 lw ra,60(sp) +8000042c: 03812403 lw s0,56(sp) +80000430: 03412483 lw s1,52(sp) +80000434: 03012903 lw s2,48(sp) +80000438: 02c12983 lw s3,44(sp) +8000043c: 04010113 addi sp,sp,64 +80000440: 00008067 ret +80000444: 00068713 mv a4,a3 +80000448: f2e7cae3 blt a5,a4,8000037c +8000044c: fddff06f j 80000428 +80000450: 00000713 li a4,0 +80000454: 00100693 li a3,1 +80000458: f5dff06f j 800003b4 +8000045c: 00048713 mv a4,s1 +80000460: 00985463 bge a6,s1,80000468 +80000464: 00080713 mv a4,a6 +80000468: 800007b7 lui a5,0x80000 +8000046c: 27478793 addi a5,a5,628 # 80000274 <__stack_top+0x81000274> +80000470: 00f7106b 0xf7106b +80000474: e01ff0ef jal ra,80000274 +80000478: f71ff06f j 800003e8 -80000478 <__clzsi2>: -80000478: 000107b7 lui a5,0x10 -8000047c: 02f57a63 bgeu a0,a5,800004b0 <__clzsi2+0x38> -80000480: 0ff00793 li a5,255 -80000484: 00a7b7b3 sltu a5,a5,a0 -80000488: 00379793 slli a5,a5,0x3 -8000048c: 80001737 lui a4,0x80001 -80000490: 02000693 li a3,32 -80000494: 40f686b3 sub a3,a3,a5 -80000498: 00f55533 srl a0,a0,a5 -8000049c: 8a070793 addi a5,a4,-1888 # 800008a0 <__stack_top+0x810008a0> -800004a0: 00a78533 add a0,a5,a0 -800004a4: 00054503 lbu a0,0(a0) -800004a8: 40a68533 sub a0,a3,a0 -800004ac: 00008067 ret -800004b0: 01000737 lui a4,0x1000 -800004b4: 01000793 li a5,16 -800004b8: fce56ae3 bltu a0,a4,8000048c <__clzsi2+0x14> -800004bc: 01800793 li a5,24 -800004c0: fcdff06f j 8000048c <__clzsi2+0x14> +8000047c <__clzsi2>: +8000047c: 000107b7 lui a5,0x10 +80000480: 02f57a63 bgeu a0,a5,800004b4 <__clzsi2+0x38> +80000484: 0ff00793 li a5,255 +80000488: 00a7b7b3 sltu a5,a5,a0 +8000048c: 00379793 slli a5,a5,0x3 +80000490: 80001737 lui a4,0x80001 +80000494: 02000693 li a3,32 +80000498: 40f686b3 sub a3,a3,a5 +8000049c: 00f55533 srl a0,a0,a5 +800004a0: 8a470793 addi a5,a4,-1884 # 800008a4 <__stack_top+0x810008a4> +800004a4: 00a78533 add a0,a5,a0 +800004a8: 00054503 lbu a0,0(a0) +800004ac: 40a68533 sub a0,a3,a0 +800004b0: 00008067 ret +800004b4: 01000737 lui a4,0x1000 +800004b8: 01000793 li a5,16 +800004bc: fce56ae3 bltu a0,a4,80000490 <__clzsi2+0x14> +800004c0: 01800793 li a5,24 +800004c4: fcdff06f j 80000490 <__clzsi2+0x14> -800004c4 : -800004c4: 00050593 mv a1,a0 -800004c8: 00000693 li a3,0 -800004cc: 00000613 li a2,0 -800004d0: 00000513 li a0,0 -800004d4: 20c0006f j 800006e0 <__register_exitproc> +800004c8 : +800004c8: 00050593 mv a1,a0 +800004cc: 00000693 li a3,0 +800004d0: 00000613 li a2,0 +800004d4: 00000513 li a0,0 +800004d8: 20c0006f j 800006e4 <__register_exitproc> -800004d8 : -800004d8: ff010113 addi sp,sp,-16 -800004dc: 00000593 li a1,0 -800004e0: 00812423 sw s0,8(sp) -800004e4: 00112623 sw ra,12(sp) -800004e8: 00050413 mv s0,a0 -800004ec: 290000ef jal ra,8000077c <__call_exitprocs> -800004f0: 800027b7 lui a5,0x80002 -800004f4: dd87a503 lw a0,-552(a5) # 80001dd8 <__stack_top+0x81001dd8> -800004f8: 03c52783 lw a5,60(a0) -800004fc: 00078463 beqz a5,80000504 -80000500: 000780e7 jalr a5 -80000504: 00040513 mv a0,s0 -80000508: d25ff0ef jal ra,8000022c <_exit> +800004dc : +800004dc: ff010113 addi sp,sp,-16 +800004e0: 00000593 li a1,0 +800004e4: 00812423 sw s0,8(sp) +800004e8: 00112623 sw ra,12(sp) +800004ec: 00050413 mv s0,a0 +800004f0: 290000ef jal ra,80000780 <__call_exitprocs> +800004f4: 800027b7 lui a5,0x80002 +800004f8: dd87a503 lw a0,-552(a5) # 80001dd8 <__stack_top+0x81001dd8> +800004fc: 03c52783 lw a5,60(a0) +80000500: 00078463 beqz a5,80000508 +80000504: 000780e7 jalr a5 +80000508: 00040513 mv a0,s0 +8000050c: d25ff0ef jal ra,80000230 <_exit> -8000050c <__libc_fini_array>: -8000050c: ff010113 addi sp,sp,-16 -80000510: 00812423 sw s0,8(sp) -80000514: 800027b7 lui a5,0x80002 -80000518: 80002437 lui s0,0x80002 -8000051c: 9a440413 addi s0,s0,-1628 # 800019a4 <__stack_top+0x810019a4> -80000520: 9a478793 addi a5,a5,-1628 # 800019a4 <__stack_top+0x810019a4> -80000524: 408787b3 sub a5,a5,s0 -80000528: 00912223 sw s1,4(sp) -8000052c: 00112623 sw ra,12(sp) -80000530: 4027d493 srai s1,a5,0x2 -80000534: 02048063 beqz s1,80000554 <__libc_fini_array+0x48> -80000538: ffc78793 addi a5,a5,-4 -8000053c: 00878433 add s0,a5,s0 -80000540: 00042783 lw a5,0(s0) -80000544: fff48493 addi s1,s1,-1 -80000548: ffc40413 addi s0,s0,-4 -8000054c: 000780e7 jalr a5 -80000550: fe0498e3 bnez s1,80000540 <__libc_fini_array+0x34> -80000554: 00c12083 lw ra,12(sp) -80000558: 00812403 lw s0,8(sp) -8000055c: 00412483 lw s1,4(sp) -80000560: 01010113 addi sp,sp,16 -80000564: 00008067 ret +80000510 <__libc_fini_array>: +80000510: ff010113 addi sp,sp,-16 +80000514: 00812423 sw s0,8(sp) +80000518: 800027b7 lui a5,0x80002 +8000051c: 80002437 lui s0,0x80002 +80000520: 9a840413 addi s0,s0,-1624 # 800019a8 <__stack_top+0x810019a8> +80000524: 9a878793 addi a5,a5,-1624 # 800019a8 <__stack_top+0x810019a8> +80000528: 408787b3 sub a5,a5,s0 +8000052c: 00912223 sw s1,4(sp) +80000530: 00112623 sw ra,12(sp) +80000534: 4027d493 srai s1,a5,0x2 +80000538: 02048063 beqz s1,80000558 <__libc_fini_array+0x48> +8000053c: ffc78793 addi a5,a5,-4 +80000540: 00878433 add s0,a5,s0 +80000544: 00042783 lw a5,0(s0) +80000548: fff48493 addi s1,s1,-1 +8000054c: ffc40413 addi s0,s0,-4 +80000550: 000780e7 jalr a5 +80000554: fe0498e3 bnez s1,80000544 <__libc_fini_array+0x34> +80000558: 00c12083 lw ra,12(sp) +8000055c: 00812403 lw s0,8(sp) +80000560: 00412483 lw s1,4(sp) +80000564: 01010113 addi sp,sp,16 +80000568: 00008067 ret -80000568 <__libc_init_array>: -80000568: ff010113 addi sp,sp,-16 -8000056c: 00812423 sw s0,8(sp) -80000570: 01212023 sw s2,0(sp) -80000574: 80002437 lui s0,0x80002 -80000578: 80002937 lui s2,0x80002 -8000057c: 9a040793 addi a5,s0,-1632 # 800019a0 <__stack_top+0x810019a0> -80000580: 9a090913 addi s2,s2,-1632 # 800019a0 <__stack_top+0x810019a0> -80000584: 40f90933 sub s2,s2,a5 -80000588: 00112623 sw ra,12(sp) -8000058c: 00912223 sw s1,4(sp) -80000590: 40295913 srai s2,s2,0x2 -80000594: 02090063 beqz s2,800005b4 <__libc_init_array+0x4c> -80000598: 9a040413 addi s0,s0,-1632 -8000059c: 00000493 li s1,0 -800005a0: 00042783 lw a5,0(s0) -800005a4: 00148493 addi s1,s1,1 -800005a8: 00440413 addi s0,s0,4 -800005ac: 000780e7 jalr a5 -800005b0: fe9918e3 bne s2,s1,800005a0 <__libc_init_array+0x38> -800005b4: 80002437 lui s0,0x80002 -800005b8: 80002937 lui s2,0x80002 -800005bc: 9a040793 addi a5,s0,-1632 # 800019a0 <__stack_top+0x810019a0> -800005c0: 9a490913 addi s2,s2,-1628 # 800019a4 <__stack_top+0x810019a4> -800005c4: 40f90933 sub s2,s2,a5 -800005c8: 40295913 srai s2,s2,0x2 -800005cc: 02090063 beqz s2,800005ec <__libc_init_array+0x84> -800005d0: 9a040413 addi s0,s0,-1632 -800005d4: 00000493 li s1,0 -800005d8: 00042783 lw a5,0(s0) -800005dc: 00148493 addi s1,s1,1 -800005e0: 00440413 addi s0,s0,4 -800005e4: 000780e7 jalr a5 -800005e8: fe9918e3 bne s2,s1,800005d8 <__libc_init_array+0x70> -800005ec: 00c12083 lw ra,12(sp) -800005f0: 00812403 lw s0,8(sp) -800005f4: 00412483 lw s1,4(sp) -800005f8: 00012903 lw s2,0(sp) -800005fc: 01010113 addi sp,sp,16 -80000600: 00008067 ret +8000056c <__libc_init_array>: +8000056c: ff010113 addi sp,sp,-16 +80000570: 00812423 sw s0,8(sp) +80000574: 01212023 sw s2,0(sp) +80000578: 80002437 lui s0,0x80002 +8000057c: 80002937 lui s2,0x80002 +80000580: 9a440793 addi a5,s0,-1628 # 800019a4 <__stack_top+0x810019a4> +80000584: 9a490913 addi s2,s2,-1628 # 800019a4 <__stack_top+0x810019a4> +80000588: 40f90933 sub s2,s2,a5 +8000058c: 00112623 sw ra,12(sp) +80000590: 00912223 sw s1,4(sp) +80000594: 40295913 srai s2,s2,0x2 +80000598: 02090063 beqz s2,800005b8 <__libc_init_array+0x4c> +8000059c: 9a440413 addi s0,s0,-1628 +800005a0: 00000493 li s1,0 +800005a4: 00042783 lw a5,0(s0) +800005a8: 00148493 addi s1,s1,1 +800005ac: 00440413 addi s0,s0,4 +800005b0: 000780e7 jalr a5 +800005b4: fe9918e3 bne s2,s1,800005a4 <__libc_init_array+0x38> +800005b8: 80002437 lui s0,0x80002 +800005bc: 80002937 lui s2,0x80002 +800005c0: 9a440793 addi a5,s0,-1628 # 800019a4 <__stack_top+0x810019a4> +800005c4: 9a890913 addi s2,s2,-1624 # 800019a8 <__stack_top+0x810019a8> +800005c8: 40f90933 sub s2,s2,a5 +800005cc: 40295913 srai s2,s2,0x2 +800005d0: 02090063 beqz s2,800005f0 <__libc_init_array+0x84> +800005d4: 9a440413 addi s0,s0,-1628 +800005d8: 00000493 li s1,0 +800005dc: 00042783 lw a5,0(s0) +800005e0: 00148493 addi s1,s1,1 +800005e4: 00440413 addi s0,s0,4 +800005e8: 000780e7 jalr a5 +800005ec: fe9918e3 bne s2,s1,800005dc <__libc_init_array+0x70> +800005f0: 00c12083 lw ra,12(sp) +800005f4: 00812403 lw s0,8(sp) +800005f8: 00412483 lw s1,4(sp) +800005fc: 00012903 lw s2,0(sp) +80000600: 01010113 addi sp,sp,16 +80000604: 00008067 ret -80000604 : -80000604: 00f00313 li t1,15 -80000608: 00050713 mv a4,a0 -8000060c: 02c37e63 bgeu t1,a2,80000648 -80000610: 00f77793 andi a5,a4,15 -80000614: 0a079063 bnez a5,800006b4 -80000618: 08059263 bnez a1,8000069c -8000061c: ff067693 andi a3,a2,-16 -80000620: 00f67613 andi a2,a2,15 -80000624: 00e686b3 add a3,a3,a4 -80000628: 00b72023 sw a1,0(a4) # 1000000 <__stack_size+0xfffc00> -8000062c: 00b72223 sw a1,4(a4) -80000630: 00b72423 sw a1,8(a4) -80000634: 00b72623 sw a1,12(a4) -80000638: 01070713 addi a4,a4,16 -8000063c: fed766e3 bltu a4,a3,80000628 -80000640: 00061463 bnez a2,80000648 -80000644: 00008067 ret -80000648: 40c306b3 sub a3,t1,a2 -8000064c: 00269693 slli a3,a3,0x2 -80000650: 00000297 auipc t0,0x0 -80000654: 005686b3 add a3,a3,t0 -80000658: 00c68067 jr 12(a3) -8000065c: 00b70723 sb a1,14(a4) -80000660: 00b706a3 sb a1,13(a4) -80000664: 00b70623 sb a1,12(a4) -80000668: 00b705a3 sb a1,11(a4) -8000066c: 00b70523 sb a1,10(a4) -80000670: 00b704a3 sb a1,9(a4) -80000674: 00b70423 sb a1,8(a4) -80000678: 00b703a3 sb a1,7(a4) -8000067c: 00b70323 sb a1,6(a4) -80000680: 00b702a3 sb a1,5(a4) -80000684: 00b70223 sb a1,4(a4) -80000688: 00b701a3 sb a1,3(a4) -8000068c: 00b70123 sb a1,2(a4) -80000690: 00b700a3 sb a1,1(a4) -80000694: 00b70023 sb a1,0(a4) -80000698: 00008067 ret -8000069c: 0ff5f593 andi a1,a1,255 -800006a0: 00859693 slli a3,a1,0x8 -800006a4: 00d5e5b3 or a1,a1,a3 -800006a8: 01059693 slli a3,a1,0x10 -800006ac: 00d5e5b3 or a1,a1,a3 -800006b0: f6dff06f j 8000061c -800006b4: 00279693 slli a3,a5,0x2 -800006b8: 00000297 auipc t0,0x0 -800006bc: 005686b3 add a3,a3,t0 -800006c0: 00008293 mv t0,ra -800006c4: fa0680e7 jalr -96(a3) -800006c8: 00028093 mv ra,t0 -800006cc: ff078793 addi a5,a5,-16 -800006d0: 40f70733 sub a4,a4,a5 -800006d4: 00f60633 add a2,a2,a5 -800006d8: f6c378e3 bgeu t1,a2,80000648 -800006dc: f3dff06f j 80000618 +80000608 : +80000608: 00f00313 li t1,15 +8000060c: 00050713 mv a4,a0 +80000610: 02c37e63 bgeu t1,a2,8000064c +80000614: 00f77793 andi a5,a4,15 +80000618: 0a079063 bnez a5,800006b8 +8000061c: 08059263 bnez a1,800006a0 +80000620: ff067693 andi a3,a2,-16 +80000624: 00f67613 andi a2,a2,15 +80000628: 00e686b3 add a3,a3,a4 +8000062c: 00b72023 sw a1,0(a4) # 1000000 <__stack_size+0xfffc00> +80000630: 00b72223 sw a1,4(a4) +80000634: 00b72423 sw a1,8(a4) +80000638: 00b72623 sw a1,12(a4) +8000063c: 01070713 addi a4,a4,16 +80000640: fed766e3 bltu a4,a3,8000062c +80000644: 00061463 bnez a2,8000064c +80000648: 00008067 ret +8000064c: 40c306b3 sub a3,t1,a2 +80000650: 00269693 slli a3,a3,0x2 +80000654: 00000297 auipc t0,0x0 +80000658: 005686b3 add a3,a3,t0 +8000065c: 00c68067 jr 12(a3) +80000660: 00b70723 sb a1,14(a4) +80000664: 00b706a3 sb a1,13(a4) +80000668: 00b70623 sb a1,12(a4) +8000066c: 00b705a3 sb a1,11(a4) +80000670: 00b70523 sb a1,10(a4) +80000674: 00b704a3 sb a1,9(a4) +80000678: 00b70423 sb a1,8(a4) +8000067c: 00b703a3 sb a1,7(a4) +80000680: 00b70323 sb a1,6(a4) +80000684: 00b702a3 sb a1,5(a4) +80000688: 00b70223 sb a1,4(a4) +8000068c: 00b701a3 sb a1,3(a4) +80000690: 00b70123 sb a1,2(a4) +80000694: 00b700a3 sb a1,1(a4) +80000698: 00b70023 sb a1,0(a4) +8000069c: 00008067 ret +800006a0: 0ff5f593 andi a1,a1,255 +800006a4: 00859693 slli a3,a1,0x8 +800006a8: 00d5e5b3 or a1,a1,a3 +800006ac: 01059693 slli a3,a1,0x10 +800006b0: 00d5e5b3 or a1,a1,a3 +800006b4: f6dff06f j 80000620 +800006b8: 00279693 slli a3,a5,0x2 +800006bc: 00000297 auipc t0,0x0 +800006c0: 005686b3 add a3,a3,t0 +800006c4: 00008293 mv t0,ra +800006c8: fa0680e7 jalr -96(a3) +800006cc: 00028093 mv ra,t0 +800006d0: ff078793 addi a5,a5,-16 +800006d4: 40f70733 sub a4,a4,a5 +800006d8: 00f60633 add a2,a2,a5 +800006dc: f6c378e3 bgeu t1,a2,8000064c +800006e0: f3dff06f j 8000061c -800006e0 <__register_exitproc>: -800006e0: 800027b7 lui a5,0x80002 -800006e4: dd87a703 lw a4,-552(a5) # 80001dd8 <__stack_top+0x81001dd8> -800006e8: 14872783 lw a5,328(a4) -800006ec: 04078c63 beqz a5,80000744 <__register_exitproc+0x64> -800006f0: 0047a703 lw a4,4(a5) -800006f4: 01f00813 li a6,31 -800006f8: 06e84e63 blt a6,a4,80000774 <__register_exitproc+0x94> -800006fc: 00271813 slli a6,a4,0x2 -80000700: 02050663 beqz a0,8000072c <__register_exitproc+0x4c> -80000704: 01078333 add t1,a5,a6 -80000708: 08c32423 sw a2,136(t1) -8000070c: 1887a883 lw a7,392(a5) -80000710: 00100613 li a2,1 -80000714: 00e61633 sll a2,a2,a4 -80000718: 00c8e8b3 or a7,a7,a2 -8000071c: 1917a423 sw a7,392(a5) -80000720: 10d32423 sw a3,264(t1) -80000724: 00200693 li a3,2 -80000728: 02d50463 beq a0,a3,80000750 <__register_exitproc+0x70> -8000072c: 00170713 addi a4,a4,1 -80000730: 00e7a223 sw a4,4(a5) -80000734: 010787b3 add a5,a5,a6 -80000738: 00b7a423 sw a1,8(a5) -8000073c: 00000513 li a0,0 -80000740: 00008067 ret -80000744: 14c70793 addi a5,a4,332 -80000748: 14f72423 sw a5,328(a4) -8000074c: fa5ff06f j 800006f0 <__register_exitproc+0x10> -80000750: 18c7a683 lw a3,396(a5) -80000754: 00170713 addi a4,a4,1 -80000758: 00e7a223 sw a4,4(a5) -8000075c: 00c6e633 or a2,a3,a2 -80000760: 18c7a623 sw a2,396(a5) -80000764: 010787b3 add a5,a5,a6 -80000768: 00b7a423 sw a1,8(a5) -8000076c: 00000513 li a0,0 -80000770: 00008067 ret -80000774: fff00513 li a0,-1 -80000778: 00008067 ret +800006e4 <__register_exitproc>: +800006e4: 800027b7 lui a5,0x80002 +800006e8: dd87a703 lw a4,-552(a5) # 80001dd8 <__stack_top+0x81001dd8> +800006ec: 14872783 lw a5,328(a4) +800006f0: 04078c63 beqz a5,80000748 <__register_exitproc+0x64> +800006f4: 0047a703 lw a4,4(a5) +800006f8: 01f00813 li a6,31 +800006fc: 06e84e63 blt a6,a4,80000778 <__register_exitproc+0x94> +80000700: 00271813 slli a6,a4,0x2 +80000704: 02050663 beqz a0,80000730 <__register_exitproc+0x4c> +80000708: 01078333 add t1,a5,a6 +8000070c: 08c32423 sw a2,136(t1) +80000710: 1887a883 lw a7,392(a5) +80000714: 00100613 li a2,1 +80000718: 00e61633 sll a2,a2,a4 +8000071c: 00c8e8b3 or a7,a7,a2 +80000720: 1917a423 sw a7,392(a5) +80000724: 10d32423 sw a3,264(t1) +80000728: 00200693 li a3,2 +8000072c: 02d50463 beq a0,a3,80000754 <__register_exitproc+0x70> +80000730: 00170713 addi a4,a4,1 +80000734: 00e7a223 sw a4,4(a5) +80000738: 010787b3 add a5,a5,a6 +8000073c: 00b7a423 sw a1,8(a5) +80000740: 00000513 li a0,0 +80000744: 00008067 ret +80000748: 14c70793 addi a5,a4,332 +8000074c: 14f72423 sw a5,328(a4) +80000750: fa5ff06f j 800006f4 <__register_exitproc+0x10> +80000754: 18c7a683 lw a3,396(a5) +80000758: 00170713 addi a4,a4,1 +8000075c: 00e7a223 sw a4,4(a5) +80000760: 00c6e633 or a2,a3,a2 +80000764: 18c7a623 sw a2,396(a5) +80000768: 010787b3 add a5,a5,a6 +8000076c: 00b7a423 sw a1,8(a5) +80000770: 00000513 li a0,0 +80000774: 00008067 ret +80000778: fff00513 li a0,-1 +8000077c: 00008067 ret -8000077c <__call_exitprocs>: -8000077c: fd010113 addi sp,sp,-48 -80000780: 800027b7 lui a5,0x80002 -80000784: 01412c23 sw s4,24(sp) -80000788: dd87aa03 lw s4,-552(a5) # 80001dd8 <__stack_top+0x81001dd8> -8000078c: 03212023 sw s2,32(sp) -80000790: 02112623 sw ra,44(sp) -80000794: 148a2903 lw s2,328(s4) -80000798: 02812423 sw s0,40(sp) -8000079c: 02912223 sw s1,36(sp) -800007a0: 01312e23 sw s3,28(sp) -800007a4: 01512a23 sw s5,20(sp) -800007a8: 01612823 sw s6,16(sp) -800007ac: 01712623 sw s7,12(sp) -800007b0: 01812423 sw s8,8(sp) -800007b4: 04090063 beqz s2,800007f4 <__call_exitprocs+0x78> -800007b8: 00050b13 mv s6,a0 -800007bc: 00058b93 mv s7,a1 -800007c0: 00100a93 li s5,1 -800007c4: fff00993 li s3,-1 -800007c8: 00492483 lw s1,4(s2) -800007cc: fff48413 addi s0,s1,-1 -800007d0: 02044263 bltz s0,800007f4 <__call_exitprocs+0x78> -800007d4: 00249493 slli s1,s1,0x2 -800007d8: 009904b3 add s1,s2,s1 -800007dc: 040b8463 beqz s7,80000824 <__call_exitprocs+0xa8> -800007e0: 1044a783 lw a5,260(s1) -800007e4: 05778063 beq a5,s7,80000824 <__call_exitprocs+0xa8> -800007e8: fff40413 addi s0,s0,-1 -800007ec: ffc48493 addi s1,s1,-4 -800007f0: ff3416e3 bne s0,s3,800007dc <__call_exitprocs+0x60> -800007f4: 02c12083 lw ra,44(sp) -800007f8: 02812403 lw s0,40(sp) -800007fc: 02412483 lw s1,36(sp) -80000800: 02012903 lw s2,32(sp) -80000804: 01c12983 lw s3,28(sp) -80000808: 01812a03 lw s4,24(sp) -8000080c: 01412a83 lw s5,20(sp) -80000810: 01012b03 lw s6,16(sp) -80000814: 00c12b83 lw s7,12(sp) -80000818: 00812c03 lw s8,8(sp) -8000081c: 03010113 addi sp,sp,48 -80000820: 00008067 ret -80000824: 00492783 lw a5,4(s2) -80000828: 0044a683 lw a3,4(s1) -8000082c: fff78793 addi a5,a5,-1 -80000830: 04878e63 beq a5,s0,8000088c <__call_exitprocs+0x110> -80000834: 0004a223 sw zero,4(s1) -80000838: fa0688e3 beqz a3,800007e8 <__call_exitprocs+0x6c> -8000083c: 18892783 lw a5,392(s2) -80000840: 008a9733 sll a4,s5,s0 -80000844: 00492c03 lw s8,4(s2) -80000848: 00f777b3 and a5,a4,a5 -8000084c: 02079263 bnez a5,80000870 <__call_exitprocs+0xf4> -80000850: 000680e7 jalr a3 -80000854: 00492703 lw a4,4(s2) -80000858: 148a2783 lw a5,328(s4) -8000085c: 01871463 bne a4,s8,80000864 <__call_exitprocs+0xe8> -80000860: f8f904e3 beq s2,a5,800007e8 <__call_exitprocs+0x6c> -80000864: f80788e3 beqz a5,800007f4 <__call_exitprocs+0x78> -80000868: 00078913 mv s2,a5 -8000086c: f5dff06f j 800007c8 <__call_exitprocs+0x4c> -80000870: 18c92783 lw a5,396(s2) -80000874: 0844a583 lw a1,132(s1) -80000878: 00f77733 and a4,a4,a5 -8000087c: 00071c63 bnez a4,80000894 <__call_exitprocs+0x118> -80000880: 000b0513 mv a0,s6 -80000884: 000680e7 jalr a3 -80000888: fcdff06f j 80000854 <__call_exitprocs+0xd8> -8000088c: 00892223 sw s0,4(s2) -80000890: fa9ff06f j 80000838 <__call_exitprocs+0xbc> -80000894: 00058513 mv a0,a1 -80000898: 000680e7 jalr a3 -8000089c: fb9ff06f j 80000854 <__call_exitprocs+0xd8> +80000780 <__call_exitprocs>: +80000780: fd010113 addi sp,sp,-48 +80000784: 800027b7 lui a5,0x80002 +80000788: 01412c23 sw s4,24(sp) +8000078c: dd87aa03 lw s4,-552(a5) # 80001dd8 <__stack_top+0x81001dd8> +80000790: 03212023 sw s2,32(sp) +80000794: 02112623 sw ra,44(sp) +80000798: 148a2903 lw s2,328(s4) +8000079c: 02812423 sw s0,40(sp) +800007a0: 02912223 sw s1,36(sp) +800007a4: 01312e23 sw s3,28(sp) +800007a8: 01512a23 sw s5,20(sp) +800007ac: 01612823 sw s6,16(sp) +800007b0: 01712623 sw s7,12(sp) +800007b4: 01812423 sw s8,8(sp) +800007b8: 04090063 beqz s2,800007f8 <__call_exitprocs+0x78> +800007bc: 00050b13 mv s6,a0 +800007c0: 00058b93 mv s7,a1 +800007c4: 00100a93 li s5,1 +800007c8: fff00993 li s3,-1 +800007cc: 00492483 lw s1,4(s2) +800007d0: fff48413 addi s0,s1,-1 +800007d4: 02044263 bltz s0,800007f8 <__call_exitprocs+0x78> +800007d8: 00249493 slli s1,s1,0x2 +800007dc: 009904b3 add s1,s2,s1 +800007e0: 040b8463 beqz s7,80000828 <__call_exitprocs+0xa8> +800007e4: 1044a783 lw a5,260(s1) +800007e8: 05778063 beq a5,s7,80000828 <__call_exitprocs+0xa8> +800007ec: fff40413 addi s0,s0,-1 +800007f0: ffc48493 addi s1,s1,-4 +800007f4: ff3416e3 bne s0,s3,800007e0 <__call_exitprocs+0x60> +800007f8: 02c12083 lw ra,44(sp) +800007fc: 02812403 lw s0,40(sp) +80000800: 02412483 lw s1,36(sp) +80000804: 02012903 lw s2,32(sp) +80000808: 01c12983 lw s3,28(sp) +8000080c: 01812a03 lw s4,24(sp) +80000810: 01412a83 lw s5,20(sp) +80000814: 01012b03 lw s6,16(sp) +80000818: 00c12b83 lw s7,12(sp) +8000081c: 00812c03 lw s8,8(sp) +80000820: 03010113 addi sp,sp,48 +80000824: 00008067 ret +80000828: 00492783 lw a5,4(s2) +8000082c: 0044a683 lw a3,4(s1) +80000830: fff78793 addi a5,a5,-1 +80000834: 04878e63 beq a5,s0,80000890 <__call_exitprocs+0x110> +80000838: 0004a223 sw zero,4(s1) +8000083c: fa0688e3 beqz a3,800007ec <__call_exitprocs+0x6c> +80000840: 18892783 lw a5,392(s2) +80000844: 008a9733 sll a4,s5,s0 +80000848: 00492c03 lw s8,4(s2) +8000084c: 00f777b3 and a5,a4,a5 +80000850: 02079263 bnez a5,80000874 <__call_exitprocs+0xf4> +80000854: 000680e7 jalr a3 +80000858: 00492703 lw a4,4(s2) +8000085c: 148a2783 lw a5,328(s4) +80000860: 01871463 bne a4,s8,80000868 <__call_exitprocs+0xe8> +80000864: f8f904e3 beq s2,a5,800007ec <__call_exitprocs+0x6c> +80000868: f80788e3 beqz a5,800007f8 <__call_exitprocs+0x78> +8000086c: 00078913 mv s2,a5 +80000870: f5dff06f j 800007cc <__call_exitprocs+0x4c> +80000874: 18c92783 lw a5,396(s2) +80000878: 0844a583 lw a1,132(s1) +8000087c: 00f77733 and a4,a4,a5 +80000880: 00071c63 bnez a4,80000898 <__call_exitprocs+0x118> +80000884: 000b0513 mv a0,s6 +80000888: 000680e7 jalr a3 +8000088c: fcdff06f j 80000858 <__call_exitprocs+0xd8> +80000890: 00892223 sw s0,4(s2) +80000894: fa9ff06f j 8000083c <__call_exitprocs+0xbc> +80000898: 00058513 mv a0,a1 +8000089c: 000680e7 jalr a3 +800008a0: fb9ff06f j 80000858 <__call_exitprocs+0xd8> Disassembly of section .rodata: -800008a0 <__clz_tab>: -800008a0: 0100 addi s0,sp,128 -800008a2: 0202 c.slli64 tp -800008a4: 03030303 lb t1,48(t1) -800008a8: 0404 addi s1,sp,512 -800008aa: 0404 addi s1,sp,512 +800008a4 <__clz_tab>: +800008a4: 0100 addi s0,sp,128 +800008a6: 0202 c.slli64 tp +800008a8: 03030303 lb t1,48(t1) 800008ac: 0404 addi s1,sp,512 800008ae: 0404 addi s1,sp,512 -800008b0: 0505 addi a0,a0,1 -800008b2: 0505 addi a0,a0,1 +800008b0: 0404 addi s1,sp,512 +800008b2: 0404 addi s1,sp,512 800008b4: 0505 addi a0,a0,1 800008b6: 0505 addi a0,a0,1 800008b8: 0505 addi a0,a0,1 800008ba: 0505 addi a0,a0,1 800008bc: 0505 addi a0,a0,1 800008be: 0505 addi a0,a0,1 -800008c0: 0606 slli a2,a2,0x1 -800008c2: 0606 slli a2,a2,0x1 +800008c0: 0505 addi a0,a0,1 +800008c2: 0505 addi a0,a0,1 800008c4: 0606 slli a2,a2,0x1 800008c6: 0606 slli a2,a2,0x1 800008c8: 0606 slli a2,a2,0x1 @@ -626,7 +625,8 @@ Disassembly of section .rodata: 800008da: 0606 slli a2,a2,0x1 800008dc: 0606 slli a2,a2,0x1 800008de: 0606 slli a2,a2,0x1 -800008e0: 07070707 0x7070707 +800008e0: 0606 slli a2,a2,0x1 +800008e2: 0606 slli a2,a2,0x1 800008e4: 07070707 0x7070707 800008e8: 07070707 0x7070707 800008ec: 07070707 0x7070707 @@ -642,8 +642,7 @@ Disassembly of section .rodata: 80000914: 07070707 0x7070707 80000918: 07070707 0x7070707 8000091c: 07070707 0x7070707 -80000920: 0808 addi a0,sp,16 -80000922: 0808 addi a0,sp,16 +80000920: 07070707 0x7070707 80000924: 0808 addi a0,sp,16 80000926: 0808 addi a0,sp,16 80000928: 0808 addi a0,sp,16 @@ -706,12 +705,14 @@ Disassembly of section .rodata: 8000099a: 0808 addi a0,sp,16 8000099c: 0808 addi a0,sp,16 8000099e: 0808 addi a0,sp,16 +800009a0: 0808 addi a0,sp,16 +800009a2: 0808 addi a0,sp,16 Disassembly of section .init_array: -800019a0 <__init_array_start>: -800019a0: 0174 addi a3,sp,140 -800019a2: 8000 0x8000 +800019a4 <__init_array_start>: +800019a4: 0174 addi a3,sp,140 +800019a6: 8000 0x8000 Disassembly of section .data: @@ -796,7 +797,7 @@ Disassembly of section .debug_aranges: a: 0004 0x4 c: 0000 unimp e: 0000 unimp - 10: 0478 addi a4,sp,524 + 10: 047c addi a5,sp,524 12: 8000 0x8000 14: 004c addi a1,sp,4 ... @@ -822,7 +823,7 @@ Disassembly of section .debug_info: 12: 0004 0x4 14: 5900 lw s0,48(a0) 16: 0006 c.slli zero,0x1 - 18: 7800 flw fs0,48(s0) + 18: 7c00 flw fs0,56(s0) 1a: 0004 0x4 1c: 4c80 lw s0,24(s1) 1e: 0000 unimp @@ -2070,7 +2071,7 @@ Disassembly of section .debug_info: b80: 02c2 slli t0,t0,0x10 b82: 2501 jal 1182 <__stack_size+0xd82> b84: 0000 unimp - b86: 7800 flw fs0,48(s0) + b86: 7c00 flw fs0,56(s0) b88: 0004 0x4 b8a: 4c80 lw s0,24(s1) b8c: 0000 unimp @@ -3315,7 +3316,7 @@ Disassembly of section .debug_info: 1736: b20d j 1058 <__stack_size+0xc58> 1738: 0f02 c.slli64 t5 173a: 0305 addi t1,t1,1 - 173c: 08a0 addi s0,sp,88 + 173c: 08a4 addi s1,sp,88 173e: 8000 0x8000 ... @@ -3911,7 +3912,7 @@ Disassembly of section .debug_line: 224: 0500 addi s0,sp,640 226: 0001 nop 228: 0205 addi tp,tp,1 - 22a: 0478 addi a4,sp,524 + 22a: 047c addi a5,sp,524 22c: 8000 0x8000 22e: 0105c203 lbu tp,16(a1) 232: 0305 addi t1,t1,1 @@ -4191,7 +4192,7 @@ Disassembly of section .debug_frame: 12: 0000 unimp 14: 0000 unimp 16: 0000 unimp - 18: 0478 addi a4,sp,524 + 18: 047c addi a5,sp,524 1a: 8000 0x8000 1c: 004c addi a1,sp,4 ... diff --git a/driver/tests/tex_demo/kernel.elf b/driver/tests/tex_demo/kernel.elf index 7cc7ac2c..05cb4770 100755 Binary files a/driver/tests/tex_demo/kernel.elf and b/driver/tests/tex_demo/kernel.elf differ diff --git a/driver/tests/tex_demo/palette64.tga b/driver/tests/tex_demo/palette64.tga index 3f4d9007..ea9bcd97 100644 Binary files a/driver/tests/tex_demo/palette64.tga and b/driver/tests/tex_demo/palette64.tga differ diff --git a/driver/tests/tex_demo/utils.cpp b/driver/tests/tex_demo/utils.cpp index 5bdfb2b7..342d49d5 100644 --- a/driver/tests/tex_demo/utils.cpp +++ b/driver/tests/tex_demo/utils.cpp @@ -81,7 +81,7 @@ int LoadTGA(const char *filename, default: std::abort(); } - *dst_bytes++ = color.toRGBA(); + *dst_bytes++ = color; } break; } @@ -108,6 +108,11 @@ int SaveTGA(const char *filename, return -1; } + if (bpp < 2 || bpp > 4) { + std::cerr << "unsupported pixel stride: " << bpp << "!" << std::endl; + return -1; + } + tga_header_t header; header.idlength = 0; header.colormaptype = 0; // no palette @@ -131,20 +136,7 @@ int SaveTGA(const char *filename, for (uint32_t y = 0; y < height; ++y) { const uint8_t* pixel_row = pixel_bytes; for (uint32_t x = 0; x < width; ++x) { - // swap R/B color channels - if (bpp == 4) { - ofs.write((const char*)pixel_row + 2, 1); - ofs.write((const char*)pixel_row + 1, 1); - ofs.write((const char*)pixel_row + 0, 1); - ofs.write((const char*)pixel_row + 3, 1); - } else if (bpp == 3) { - ofs.write((const char*)pixel_row + 2, 1); - ofs.write((const char*)pixel_row + 1, 1); - ofs.write((const char*)pixel_row + 0, 1); - } else{ - std::cerr << "unsupported TGA bitsperpixel!" << std::endl; - return -1; - } + ofs.write((const char*)pixel_row, bpp); pixel_row += bpp; } pixel_bytes -= pitch;