comparison pirelli/fw-disasm @ 239:7a394cc1c72a

pirelli/fw-disasm: spi_env code located
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 23 Dec 2017 01:13:07 +0000
parents 4ec6bbbac914
children 7f10fb2c17cd
comparison
equal deleted inserted replaced
238:4ec6bbbac914 239:7a394cc1c72a
760 3bba28: 200f mov r0, #15 ; 0xf 760 3bba28: 200f mov r0, #15 ; 0xf
761 3bba2a: f024 f940 bl 0x3dfcae ; $IQ_Unmask 761 3bba2a: f024 f940 bl 0x3dfcae ; $IQ_Unmask
762 3bba2e: f484 fc2d bl 0x4028c ; $INT_EnableIRQ 762 3bba2e: f484 fc2d bl 0x4028c ; $INT_EnableIRQ
763 3bba32: bd00 pop {pc} 763 3bba32: bd00 pop {pc}
764 764
765 $spi_get_info:
766 ; perfect match to TCS211 version
767 3cd72c: b500 push {lr}
768 3cd72e: b081 sub sp, #4
769 3cd730: 9000 str r0, [sp, #0]
770 3cd732: 9900 ldr r1, [sp, #0]
771 3cd734: 2003 mov r0, #3
772 3cd736: 6008 str r0, [r1, #0]
773 3cd738: 9800 ldr r0, [sp, #0]
774 3cd73a: 497e ldr r1, =0xa0010 ; via 0x3cd934
775 3cd73c: 6101 str r1, [r0, #16] ; 0x10
776 3cd73e: 9800 ldr r0, [sp, #0]
777 3cd740: 3004 add r0, #4
778 3cd742: a153 add r1, pc, #332 ; 0x14c
779 3cd744: 2204 mov r2, #4
780 3cd746: f029 fd79 bl 0x3f723c ; memcpy()
781 3cd74a: 9900 ldr r1, [sp, #0]
782 3cd74c: 207d mov r0, #125 ; 0x7d
783 3cd74e: 00c0 lsl r0, r0, #3
784 3cd750: 8288 strh r0, [r1, #20] ; 0x14
785 3cd752: 9900 ldr r1, [sp, #0]
786 3cd754: 2027 mov r0, #39 ; 0x27
787 3cd756: 7588 strb r0, [r1, #22] ; 0x16
788 3cd758: 9900 ldr r1, [sp, #0]
789 3cd75a: 2001 mov r0, #1
790 3cd75c: 7708 strb r0, [r1, #28] ; 0x1c
791 3cd75e: 9800 ldr r0, [sp, #0]
792 3cd760: 3020 add r0, #32 ; 0x20
793 3cd762: a14c add r1, pc, #304 ; 0x130
794 3cd764: 2209 mov r2, #9
795 3cd766: f029 fd69 bl 0x3f723c ; memcpy()
796 3cd76a: 9900 ldr r1, [sp, #0]
797 3cd76c: 20ff mov r0, #255 ; 0xff
798 3cd76e: 3001 add r0, #1
799 3cd770: 62c8 str r0, [r1, #44] ; 0x2c
800 3cd772: 9900 ldr r1, [sp, #0]
801 3cd774: 20c8 mov r0, #200 ; 0xc8
802 3cd776: 6308 str r0, [r1, #48] ; 0x30
803 3cd778: 205c mov r0, #92 ; 0x5c
804 3cd77a: 9900 ldr r1, [sp, #0]
805 3cd77c: 2200 mov r2, #0
806 3cd77e: 5442 strb r2, [r0, r1]
807 ; spi_set_info
808 3cd780: 2090 mov r0, #144 ; 0x90
809 3cd782: 9900 ldr r1, [sp, #0]
810 3cd784: 4a6c ldr r2, =0x3cd7bd ; via 0x3cd938
811 3cd786: 5042 str r2, [r0, r1]
812 ; spi_init
813 3cd788: 2094 mov r0, #148 ; 0x94
814 3cd78a: 9900 ldr r1, [sp, #0]
815 3cd78c: 4a6b ldr r2, =0x3cd883 ; via 0x3cd93c
816 3cd78e: 5042 str r2, [r0, r1]
817 ; spi_core
818 3cd790: 2098 mov r0, #152 ; 0x98
819 3cd792: 9900 ldr r1, [sp, #0]
820 3cd794: 4a6a ldr r2, =0x3e8ca1 ; via 0x3cd940
821 3cd796: 5042 str r2, [r0, r1]
822 ; spi_stop
823 3cd798: 209c mov r0, #156 ; 0x9c
824 3cd79a: 9900 ldr r1, [sp, #0]
825 3cd79c: 4a69 ldr r2, =0x3cd887 ; via 0x3cd944
826 3cd79e: 5042 str r2, [r0, r1]
827 ; spi_kill
828 3cd7a0: 20a0 mov r0, #160 ; 0xa0
829 3cd7a2: 9900 ldr r1, [sp, #0]
830 3cd7a4: 4a68 ldr r2, =0x3cd88b ; via 0x3cd948
831 3cd7a6: 5042 str r2, [r0, r1]
832 3cd7a8: 208c mov r0, #140 ; 0x8c
833 3cd7aa: 9900 ldr r1, [sp, #0]
834 3cd7ac: 2200 mov r2, #0
835 3cd7ae: 5042 str r2, [r0, r1]
836 3cd7b0: 2188 mov r1, #136 ; 0x88
837 3cd7b2: 9a00 ldr r2, [sp, #0]
838 3cd7b4: 2000 mov r0, #0
839 3cd7b6: 5488 strb r0, [r1, r2]
840 3cd7b8: b001 add sp, #4
841 3cd7ba: bd00 pop {pc}
842
843 T_SPI_GBL_INFO structure:
844
845 0x00: prim_id like in TCS211
846 0x02: addr_id (ditto)
847 0x04: adc_result[8] array (ditto)
848 0x14: Foxconn/Pirelli's unknown insertions
849 0x32: assumed is_gsm_on
850 0x33: assumed is_adc_on
851 0x34: assumed SpiTaskReady
852
853 $spi_set_info:
854 3cd7bc: b500 push {lr}
855 3cd7be: b088 sub sp, #32 ; 0x20
856 3cd7c0: 9305 str r3, [sp, #20] ; 0x14
857 3cd7c2: 9204 str r2, [sp, #16] ; 0x10
858 3cd7c4: 9103 str r1, [sp, #12] ; 0xc
859 3cd7c6: 4669 mov r1, sp
860 3cd7c8: 7208 strb r0, [r1, #8]
861 3cd7ca: 485a ldr r0, =0xa0010 ; via 0x3cd934
862 3cd7cc: 9000 str r0, [sp, #0]
863 3cd7ce: a034 add r0, pc, #208 ; 0xd0
864 3cd7d0: 213e mov r1, #62 ; 0x3e
865 3cd7d2: 2200 mov r2, #0
866 3cd7d4: 43d2 mvn r2, r2
867 3cd7d6: 2305 mov r3, #5
868 3cd7d8: f00d fa2c bl 0x3dac34 ; rvf_send_trace()
869 3cd7dc: 9804 ldr r0, [sp, #16] ; 0x10
870 3cd7de: 8800 ldrh r0, [r0, #0]
871 ; struct allocation size differs from TCS211
872 3cd7e0: 2138 mov r1, #56 ; 0x38
873 3cd7e2: 4a5a ldr r2, =0x1774e38 ; via 0x3cd94c
874 3cd7e4: f5f7 f8f0 bl 0x1c49c8 ; rvf_get_buf()
875 3cd7e8: 9006 str r0, [sp, #24] ; 0x18
876 3cd7ea: 9806 ldr r0, [sp, #24] ; 0x18
877 3cd7ec: 2802 cmp r0, #2
878 3cd7ee: d10b bne 0x3cd808
879 3cd7f0: 4850 ldr r0, =0xa0010 ; via 0x3cd934
880 3cd7f2: 9000 str r0, [sp, #0]
881 3cd7f4: a03a add r0, pc, #232 ; 0xe8
882 3cd7f6: 2150 mov r1, #80 ; 0x50
883 3cd7f8: 2200 mov r2, #0
884 3cd7fa: 43d2 mvn r2, r2
885 3cd7fc: 2301 mov r3, #1
886 3cd7fe: f00d fa19 bl 0x3dac34 ; rvf_send_trace()
887 3cd802: 2004 mov r0, #4
888 3cd804: 43c0 mvn r0, r0
889 3cd806: e03a b 0x3cd87e
890 3cd808: 4951 ldr r1, =0x1774e3c ; via 0x3cd950
891 3cd80a: 9805 ldr r0, [sp, #20] ; 0x14
892 3cd80c: 6008 str r0, [r1, #0]
893 3cd80e: 484f ldr r0, =0x1774e38 ; via 0x3cd94c
894 3cd810: 6801 ldr r1, [r0, #0]
895 3cd812: 9804 ldr r0, [sp, #16] ; 0x10
896 3cd814: 8800 ldrh r0, [r0, #0]
897 3cd816: 8008 strh r0, [r1, #0]
898 3cd818: 484c ldr r0, =0x1774e38 ; via 0x3cd94c
899 3cd81a: 6801 ldr r1, [r0, #0]
900 3cd81c: 4668 mov r0, sp
901 3cd81e: 7a00 ldrb r0, [r0, #8]
902 3cd820: 7088 strb r0, [r1, #2]
903 3cd822: 4669 mov r1, sp
904 3cd824: 2000 mov r0, #0
905 3cd826: 8388 strh r0, [r1, #28] ; 0x1c
906 3cd828: 4668 mov r0, sp
907 3cd82a: 8b80 ldrh r0, [r0, #28] ; 0x1c
908 3cd82c: 2808 cmp r0, #8
909 3cd82e: da10 bge 0x3cd852
910 3cd830: 4668 mov r0, sp
911 3cd832: 8b80 ldrh r0, [r0, #28] ; 0x1c
912 3cd834: 0040 lsl r0, r0, #1
913 3cd836: 4945 ldr r1, =0x1774e38 ; via 0x3cd94c
914 3cd838: 6809 ldr r1, [r1, #0]
915 3cd83a: 1840 add r0, r0, r1
916 3cd83c: 2100 mov r1, #0
917 3cd83e: 8081 strh r1, [r0, #4]
918 3cd840: 4669 mov r1, sp
919 3cd842: 4668 mov r0, sp
920 3cd844: 8b80 ldrh r0, [r0, #28] ; 0x1c
921 3cd846: 3001 add r0, #1
922 3cd848: 8388 strh r0, [r1, #28] ; 0x1c
923 3cd84a: 4668 mov r0, sp
924 3cd84c: 8b80 ldrh r0, [r0, #28] ; 0x1c
925 3cd84e: 2808 cmp r0, #8
926 3cd850: dbee blt 0x3cd830
927 ; the following 3 half-word writes do not correspond to TI's original version
928 ; they must be Pirelli/Foxconn's additions
929 3cd852: 483e ldr r0, =0x1774e38 ; via 0x3cd94c
930 3cd854: 6800 ldr r0, [r0, #0]
931 3cd856: 2100 mov r1, #0
932 3cd858: 85c1 strh r1, [r0, #46] ; 0x2e
933 3cd85a: 483c ldr r0, =0x1774e38 ; via 0x3cd94c
934 3cd85c: 6801 ldr r1, [r0, #0]
935 3cd85e: 2000 mov r0, #0
936 3cd860: 8608 strh r0, [r1, #48] ; 0x30
937 3cd862: 483a ldr r0, =0x1774e38 ; via 0x3cd94c
938 3cd864: 6801 ldr r1, [r0, #0]
939 3cd866: 2000 mov r0, #0
940 3cd868: 8588 strh r0, [r1, #44] ; 0x2c
941 ; the following two byte writes probably correspond to the clearing
942 ; of is_gsm_on and SpiTaskReady members in TI's original version
943 3cd86a: 2232 mov r2, #50 ; 0x32
944 3cd86c: 4837 ldr r0, =0x1774e38 ; via 0x3cd94c
945 3cd86e: 6800 ldr r0, [r0, #0]
946 3cd870: 2100 mov r1, #0
947 3cd872: 5411 strb r1, [r2, r0]
948 3cd874: 2134 mov r1, #52 ; 0x34
949 3cd876: 4835 ldr r0, =0x1774e38 ; via 0x3cd94c
950 3cd878: 6802 ldr r2, [r0, #0]
951 3cd87a: 2000 mov r0, #0
952 3cd87c: 5488 strb r0, [r1, r2]
953 3cd87e: b008 add sp, #32 ; 0x20
954 3cd880: bd00 pop {pc}
955
956 $spi_init:
957 3cd882: 2000 mov r0, #0
958 3cd884: 4770 bx lr
959
960 $spi_stop:
961 3cd886: 2000 mov r0, #0
962 3cd888: 4770 bx lr
963
964 $spi_kill:
965 3cd88a: 2000 mov r0, #0
966 3cd88c: 4770 bx lr
967 3cd88e: 46c0 nop (mov r8, r8)
968
765 _f_checksum: 969 _f_checksum:
766 3e6990: e1a0c000 mov r12, r0 970 3e6990: e1a0c000 mov r12, r0
767 3e6994: e3a00000 mov r0, #0 971 3e6994: e3a00000 mov r0, #0
768 3e6998: e3510000 cmp r1, #0 972 3e6998: e3510000 cmp r1, #0
769 3e699c: 012fff1e bxeq lr 973 3e699c: 012fff1e bxeq lr
1155 83cb8c: f002 fe86 bl 0x83f89c ; C$MEMCPY 1359 83cb8c: f002 fe86 bl 0x83f89c ; C$MEMCPY
1156 83cb90: bd30 pop {r4, r5, pc} 1360 83cb90: bd30 pop {r4, r5, pc}
1157 83cb92: 2000 mov r0, #0 1361 83cb92: 2000 mov r0, #0
1158 83cb94: 4770 bx lr 1362 83cb94: 4770 bx lr
1159 83cb96: 46c0 nop (mov r8, r8) 1363 83cb96: 46c0 nop (mov r8, r8)
1364
1365 XRAM data:
1366
1367 0x1774e38: SPI_GBL_INFO_PTR
1368 0x1774e3c: spi_error_ft