Skip to content

Commit 7f77dce

Browse files
amaanqtyssjhx
andauthored
regenerate symbols & add loongarch backend (#1903) (#2148)
* regenerate symbols * Squash loongarch --------- Co-authored-by: WangLiangpu <[email protected]>
1 parent cb5aab0 commit 7f77dce

File tree

9 files changed

+10106
-46
lines changed

9 files changed

+10106
-46
lines changed

CMakeLists.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,11 @@ else()
279279
set(UNICORN_TARGET_ARCH "avr")
280280
break()
281281
endif()
282+
string(FIND ${UC_COMPILER_MACRO} "loongarch64" UC_RET)
283+
if (${UC_RET} GREATER_EQUAL "0")
284+
set(UNICORN_TARGET_ARCH "loongarch64")
285+
break()
286+
endif()
282287
message(FATAL_ERROR "Unknown host compiler: ${CMAKE_C_COMPILER}.")
283288
endwhile(TRUE)
284289
endif()

qemu/avr.h

Lines changed: 88 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@
44
#ifndef UNICORN_ARCH_POSTFIX
55
#define UNICORN_ARCH_POSTFIX _avr
66
#endif
7+
#define unicorn_fill_tlb unicorn_fill_tlb_avr
8+
#define reg_read reg_read_avr
9+
#define reg_write reg_write_avr
10+
#define uc_init uc_init_avr
711
#define uc_add_inline_hook uc_add_inline_hook_avr
812
#define uc_del_inline_hook uc_del_inline_hook_avr
913
#define tb_invalidate_phys_range tb_invalidate_phys_range_avr
@@ -38,7 +42,10 @@
3842
#define tcg_gen_shl_i64 tcg_gen_shl_i64_avr
3943
#define tcg_gen_shr_i64 tcg_gen_shr_i64_avr
4044
#define tcg_gen_st_i64 tcg_gen_st_i64_avr
45+
#define tcg_gen_add_i64 tcg_gen_add_i64_avr
46+
#define tcg_gen_sub_i64 tcg_gen_sub_i64_avr
4147
#define tcg_gen_xor_i64 tcg_gen_xor_i64_avr
48+
#define tcg_gen_neg_i64 tcg_gen_neg_i64_avr
4249
#define cpu_icount_to_ns cpu_icount_to_ns_avr
4350
#define cpu_is_stopped cpu_is_stopped_avr
4451
#define cpu_get_ticks cpu_get_ticks_avr
@@ -121,7 +128,10 @@
121128
#define memory_map memory_map_avr
122129
#define memory_map_io memory_map_io_avr
123130
#define memory_map_ptr memory_map_ptr_avr
131+
#define memory_cow memory_cow_avr
124132
#define memory_unmap memory_unmap_avr
133+
#define memory_moveout memory_moveout_avr
134+
#define memory_movein memory_movein_avr
125135
#define memory_free memory_free_avr
126136
#define flatview_unref flatview_unref_avr
127137
#define address_space_get_flatview address_space_get_flatview_avr
@@ -140,14 +150,17 @@
140150
#define memory_region_get_ram_addr memory_region_get_ram_addr_avr
141151
#define memory_region_add_subregion memory_region_add_subregion_avr
142152
#define memory_region_del_subregion memory_region_del_subregion_avr
153+
#define memory_region_add_subregion_overlap memory_region_add_subregion_overlap_avr
143154
#define memory_region_find memory_region_find_avr
155+
#define memory_region_filter_subregions memory_region_filter_subregions_avr
144156
#define memory_listener_register memory_listener_register_avr
145157
#define memory_listener_unregister memory_listener_unregister_avr
146158
#define address_space_remove_listeners address_space_remove_listeners_avr
147159
#define address_space_init address_space_init_avr
148160
#define address_space_destroy address_space_destroy_avr
149161
#define memory_region_init_ram memory_region_init_ram_avr
150162
#define memory_mapping_list_add_merge_sorted memory_mapping_list_add_merge_sorted_avr
163+
#define find_memory_mapping find_memory_mapping_avr
151164
#define exec_inline_op exec_inline_op_avr
152165
#define floatx80_default_nan floatx80_default_nan_avr
153166
#define float_raise float_raise_avr
@@ -364,6 +377,8 @@
364377
#define floatx80_sub floatx80_sub_avr
365378
#define floatx80_mul floatx80_mul_avr
366379
#define floatx80_div floatx80_div_avr
380+
#define floatx80_modrem floatx80_modrem_avr
381+
#define floatx80_mod floatx80_mod_avr
367382
#define floatx80_rem floatx80_rem_avr
368383
#define floatx80_sqrt floatx80_sqrt_avr
369384
#define floatx80_eq floatx80_eq_avr
@@ -638,6 +653,7 @@
638653
#define tcg_gen_gvec_dup_i32 tcg_gen_gvec_dup_i32_avr
639654
#define tcg_gen_gvec_dup_i64 tcg_gen_gvec_dup_i64_avr
640655
#define tcg_gen_gvec_dup_mem tcg_gen_gvec_dup_mem_avr
656+
#define tcg_gen_gvec_dup_imm tcg_gen_gvec_dup_imm_avr
641657
#define tcg_gen_gvec_dup64i tcg_gen_gvec_dup64i_avr
642658
#define tcg_gen_gvec_dup32i tcg_gen_gvec_dup32i_avr
643659
#define tcg_gen_gvec_dup16i tcg_gen_gvec_dup16i_avr
@@ -692,13 +708,20 @@
692708
#define tcg_gen_gvec_shri tcg_gen_gvec_shri_avr
693709
#define tcg_gen_vec_sar8i_i64 tcg_gen_vec_sar8i_i64_avr
694710
#define tcg_gen_vec_sar16i_i64 tcg_gen_vec_sar16i_i64_avr
711+
#define tcg_gen_vec_rotl8i_i64 tcg_gen_vec_rotl8i_i64_avr
712+
#define tcg_gen_vec_rotl16i_i64 tcg_gen_vec_rotl16i_i64_avr
695713
#define tcg_gen_gvec_sari tcg_gen_gvec_sari_avr
714+
#define tcg_gen_gvec_rotli tcg_gen_gvec_rotli_avr
715+
#define tcg_gen_gvec_rotri tcg_gen_gvec_rotri_avr
696716
#define tcg_gen_gvec_shls tcg_gen_gvec_shls_avr
697717
#define tcg_gen_gvec_shrs tcg_gen_gvec_shrs_avr
698718
#define tcg_gen_gvec_sars tcg_gen_gvec_sars_avr
719+
#define tcg_gen_gvec_rotls tcg_gen_gvec_rotls_avr
699720
#define tcg_gen_gvec_shlv tcg_gen_gvec_shlv_avr
700721
#define tcg_gen_gvec_shrv tcg_gen_gvec_shrv_avr
701722
#define tcg_gen_gvec_sarv tcg_gen_gvec_sarv_avr
723+
#define tcg_gen_gvec_rotlv tcg_gen_gvec_rotlv_avr
724+
#define tcg_gen_gvec_rotrv tcg_gen_gvec_rotrv_avr
702725
#define tcg_gen_gvec_cmp tcg_gen_gvec_cmp_avr
703726
#define tcg_gen_gvec_bitsel tcg_gen_gvec_bitsel_avr
704727
#define tcg_can_emit_vecop_list tcg_can_emit_vecop_list_avr
@@ -735,6 +758,8 @@
735758
#define tcg_gen_shli_vec tcg_gen_shli_vec_avr
736759
#define tcg_gen_shri_vec tcg_gen_shri_vec_avr
737760
#define tcg_gen_sari_vec tcg_gen_sari_vec_avr
761+
#define tcg_gen_rotli_vec tcg_gen_rotli_vec_avr
762+
#define tcg_gen_rotri_vec tcg_gen_rotri_vec_avr
738763
#define tcg_gen_cmp_vec tcg_gen_cmp_vec_avr
739764
#define tcg_gen_add_vec tcg_gen_add_vec_avr
740765
#define tcg_gen_sub_vec tcg_gen_sub_vec_avr
@@ -750,9 +775,12 @@
750775
#define tcg_gen_shlv_vec tcg_gen_shlv_vec_avr
751776
#define tcg_gen_shrv_vec tcg_gen_shrv_vec_avr
752777
#define tcg_gen_sarv_vec tcg_gen_sarv_vec_avr
778+
#define tcg_gen_rotlv_vec tcg_gen_rotlv_vec_avr
779+
#define tcg_gen_rotrv_vec tcg_gen_rotrv_vec_avr
753780
#define tcg_gen_shls_vec tcg_gen_shls_vec_avr
754781
#define tcg_gen_shrs_vec tcg_gen_shrs_vec_avr
755782
#define tcg_gen_sars_vec tcg_gen_sars_vec_avr
783+
#define tcg_gen_rotls_vec tcg_gen_rotls_vec_avr
756784
#define tcg_gen_bitsel_vec tcg_gen_bitsel_vec_avr
757785
#define tcg_gen_cmpsel_vec tcg_gen_cmpsel_vec_avr
758786
#define tb_htable_lookup tb_htable_lookup_avr
@@ -764,6 +792,7 @@
764792
#define cpu_loop_exit_restore cpu_loop_exit_restore_avr
765793
#define cpu_loop_exit_atomic cpu_loop_exit_atomic_avr
766794
#define tlb_init tlb_init_avr
795+
#define tlb_destroy tlb_destroy_avr
767796
#define tlb_flush_by_mmuidx tlb_flush_by_mmuidx_avr
768797
#define tlb_flush tlb_flush_avr
769798
#define tlb_flush_by_mmuidx_all_cpus tlb_flush_by_mmuidx_all_cpus_avr
@@ -784,6 +813,7 @@
784813
#define tlb_set_page tlb_set_page_avr
785814
#define get_page_addr_code_hostp get_page_addr_code_hostp_avr
786815
#define get_page_addr_code get_page_addr_code_avr
816+
#define probe_access_flags probe_access_flags_avr
787817
#define probe_access probe_access_avr
788818
#define tlb_vaddr_to_host tlb_vaddr_to_host_avr
789819
#define helper_ret_ldub_mmu helper_ret_ldub_mmu_avr
@@ -800,22 +830,34 @@
800830
#define helper_be_ldsl_mmu helper_be_ldsl_mmu_avr
801831
#define cpu_ldub_mmuidx_ra cpu_ldub_mmuidx_ra_avr
802832
#define cpu_ldsb_mmuidx_ra cpu_ldsb_mmuidx_ra_avr
803-
#define cpu_lduw_mmuidx_ra cpu_lduw_mmuidx_ra_avr
804-
#define cpu_ldsw_mmuidx_ra cpu_ldsw_mmuidx_ra_avr
805-
#define cpu_ldl_mmuidx_ra cpu_ldl_mmuidx_ra_avr
806-
#define cpu_ldq_mmuidx_ra cpu_ldq_mmuidx_ra_avr
833+
#define cpu_lduw_be_mmuidx_ra cpu_lduw_be_mmuidx_ra_avr
834+
#define cpu_lduw_le_mmuidx_ra cpu_lduw_le_mmuidx_ra_avr
835+
#define cpu_ldsw_be_mmuidx_ra cpu_ldsw_be_mmuidx_ra_avr
836+
#define cpu_ldsw_le_mmuidx_ra cpu_ldsw_le_mmuidx_ra_avr
837+
#define cpu_ldl_be_mmuidx_ra cpu_ldl_be_mmuidx_ra_avr
838+
#define cpu_ldl_le_mmuidx_ra cpu_ldl_le_mmuidx_ra_avr
839+
#define cpu_ldq_be_mmuidx_ra cpu_ldq_be_mmuidx_ra_avr
840+
#define cpu_ldq_le_mmuidx_ra cpu_ldq_le_mmuidx_ra_avr
807841
#define cpu_ldub_data_ra cpu_ldub_data_ra_avr
808842
#define cpu_ldsb_data_ra cpu_ldsb_data_ra_avr
809-
#define cpu_lduw_data_ra cpu_lduw_data_ra_avr
810-
#define cpu_ldsw_data_ra cpu_ldsw_data_ra_avr
811-
#define cpu_ldl_data_ra cpu_ldl_data_ra_avr
812-
#define cpu_ldq_data_ra cpu_ldq_data_ra_avr
843+
#define cpu_lduw_be_data_ra cpu_lduw_be_data_ra_avr
844+
#define cpu_lduw_le_data_ra cpu_lduw_le_data_ra_avr
845+
#define cpu_ldsw_be_data_ra cpu_ldsw_be_data_ra_avr
846+
#define cpu_ldsw_le_data_ra cpu_ldsw_le_data_ra_avr
847+
#define cpu_ldl_be_data_ra cpu_ldl_be_data_ra_avr
848+
#define cpu_ldl_le_data_ra cpu_ldl_le_data_ra_avr
849+
#define cpu_ldq_be_data_ra cpu_ldq_be_data_ra_avr
850+
#define cpu_ldq_le_data_ra cpu_ldq_le_data_ra_avr
813851
#define cpu_ldub_data cpu_ldub_data_avr
814852
#define cpu_ldsb_data cpu_ldsb_data_avr
815-
#define cpu_lduw_data cpu_lduw_data_avr
816-
#define cpu_ldsw_data cpu_ldsw_data_avr
817-
#define cpu_ldl_data cpu_ldl_data_avr
818-
#define cpu_ldq_data cpu_ldq_data_avr
853+
#define cpu_lduw_be_data cpu_lduw_be_data_avr
854+
#define cpu_lduw_le_data cpu_lduw_le_data_avr
855+
#define cpu_ldsw_be_data cpu_ldsw_be_data_avr
856+
#define cpu_ldsw_le_data cpu_ldsw_le_data_avr
857+
#define cpu_ldl_be_data cpu_ldl_be_data_avr
858+
#define cpu_ldl_le_data cpu_ldl_le_data_avr
859+
#define cpu_ldq_le_data cpu_ldq_le_data_avr
860+
#define cpu_ldq_be_data cpu_ldq_be_data_avr
819861
#define helper_ret_stb_mmu helper_ret_stb_mmu_avr
820862
#define helper_le_stw_mmu helper_le_stw_mmu_avr
821863
#define helper_be_stw_mmu helper_be_stw_mmu_avr
@@ -824,17 +866,26 @@
824866
#define helper_le_stq_mmu helper_le_stq_mmu_avr
825867
#define helper_be_stq_mmu helper_be_stq_mmu_avr
826868
#define cpu_stb_mmuidx_ra cpu_stb_mmuidx_ra_avr
827-
#define cpu_stw_mmuidx_ra cpu_stw_mmuidx_ra_avr
828-
#define cpu_stl_mmuidx_ra cpu_stl_mmuidx_ra_avr
829-
#define cpu_stq_mmuidx_ra cpu_stq_mmuidx_ra_avr
869+
#define cpu_stw_be_mmuidx_ra cpu_stw_be_mmuidx_ra_avr
870+
#define cpu_stw_le_mmuidx_ra cpu_stw_le_mmuidx_ra_avr
871+
#define cpu_stl_be_mmuidx_ra cpu_stl_be_mmuidx_ra_avr
872+
#define cpu_stl_le_mmuidx_ra cpu_stl_le_mmuidx_ra_avr
873+
#define cpu_stq_be_mmuidx_ra cpu_stq_be_mmuidx_ra_avr
874+
#define cpu_stq_le_mmuidx_ra cpu_stq_le_mmuidx_ra_avr
830875
#define cpu_stb_data_ra cpu_stb_data_ra_avr
831-
#define cpu_stw_data_ra cpu_stw_data_ra_avr
832-
#define cpu_stl_data_ra cpu_stl_data_ra_avr
833-
#define cpu_stq_data_ra cpu_stq_data_ra_avr
876+
#define cpu_stw_be_data_ra cpu_stw_be_data_ra_avr
877+
#define cpu_stw_le_data_ra cpu_stw_le_data_ra_avr
878+
#define cpu_stl_be_data_ra cpu_stl_be_data_ra_avr
879+
#define cpu_stl_le_data_ra cpu_stl_le_data_ra_avr
880+
#define cpu_stq_be_data_ra cpu_stq_be_data_ra_avr
881+
#define cpu_stq_le_data_ra cpu_stq_le_data_ra_avr
834882
#define cpu_stb_data cpu_stb_data_avr
835-
#define cpu_stw_data cpu_stw_data_avr
836-
#define cpu_stl_data cpu_stl_data_avr
837-
#define cpu_stq_data cpu_stq_data_avr
883+
#define cpu_stw_be_data cpu_stw_be_data_avr
884+
#define cpu_stw_le_data cpu_stw_le_data_avr
885+
#define cpu_stl_be_data cpu_stl_be_data_avr
886+
#define cpu_stl_le_data cpu_stl_le_data_avr
887+
#define cpu_stq_be_data cpu_stq_be_data_avr
888+
#define cpu_stq_le_data cpu_stq_le_data_avr
838889
#define helper_atomic_cmpxchgb_mmu helper_atomic_cmpxchgb_mmu_avr
839890
#define helper_atomic_xchgb_mmu helper_atomic_xchgb_mmu_avr
840891
#define helper_atomic_fetch_addb_mmu helper_atomic_fetch_addb_mmu_avr
@@ -1091,6 +1142,7 @@
10911142
#define cpu_lduw_code cpu_lduw_code_avr
10921143
#define cpu_ldl_code cpu_ldl_code_avr
10931144
#define cpu_ldq_code cpu_ldq_code_avr
1145+
#define cpu_interrupt_handler cpu_interrupt_handler_avr
10941146
#define helper_div_i32 helper_div_i32_avr
10951147
#define helper_rem_i32 helper_rem_i32_avr
10961148
#define helper_divu_i32 helper_divu_i32_avr
@@ -1175,6 +1227,10 @@
11751227
#define helper_gvec_sar16i helper_gvec_sar16i_avr
11761228
#define helper_gvec_sar32i helper_gvec_sar32i_avr
11771229
#define helper_gvec_sar64i helper_gvec_sar64i_avr
1230+
#define helper_gvec_rotl8i helper_gvec_rotl8i_avr
1231+
#define helper_gvec_rotl16i helper_gvec_rotl16i_avr
1232+
#define helper_gvec_rotl32i helper_gvec_rotl32i_avr
1233+
#define helper_gvec_rotl64i helper_gvec_rotl64i_avr
11781234
#define helper_gvec_shl8v helper_gvec_shl8v_avr
11791235
#define helper_gvec_shl16v helper_gvec_shl16v_avr
11801236
#define helper_gvec_shl32v helper_gvec_shl32v_avr
@@ -1187,6 +1243,14 @@
11871243
#define helper_gvec_sar16v helper_gvec_sar16v_avr
11881244
#define helper_gvec_sar32v helper_gvec_sar32v_avr
11891245
#define helper_gvec_sar64v helper_gvec_sar64v_avr
1246+
#define helper_gvec_rotl8v helper_gvec_rotl8v_avr
1247+
#define helper_gvec_rotl16v helper_gvec_rotl16v_avr
1248+
#define helper_gvec_rotl32v helper_gvec_rotl32v_avr
1249+
#define helper_gvec_rotl64v helper_gvec_rotl64v_avr
1250+
#define helper_gvec_rotr8v helper_gvec_rotr8v_avr
1251+
#define helper_gvec_rotr16v helper_gvec_rotr16v_avr
1252+
#define helper_gvec_rotr32v helper_gvec_rotr32v_avr
1253+
#define helper_gvec_rotr64v helper_gvec_rotr64v_avr
11901254
#define helper_gvec_eq8 helper_gvec_eq8_avr
11911255
#define helper_gvec_ne8 helper_gvec_ne8_avr
11921256
#define helper_gvec_lt8 helper_gvec_lt8_avr
@@ -1279,6 +1343,9 @@
12791343
#define gen_helper_vfp_set_fpscr gen_helper_vfp_set_fpscr_avr
12801344
#define gen_helper_cpsr_read gen_helper_cpsr_read_avr
12811345
#define gen_helper_cpsr_write gen_helper_cpsr_write_avr
1346+
#define tlb_reset_dirty_by_vaddr tlb_reset_dirty_by_vaddr_avr
1347+
#define helper_stqcx_le_parallel helper_stqcx_le_parallel_avr
1348+
#define helper_stqcx_be_parallel helper_stqcx_be_parallel_avr
12821349
#define helper_sleep helper_sleep_avr
12831350
#define helper_unsupported helper_unsupported_avr
12841351
#define helper_debug helper_debug_avr
@@ -1290,8 +1357,4 @@
12901357
#define helper_wdr helper_wdr_avr
12911358
#define gen_intermediate_code gen_intermediate_code_avr
12921359
#define restore_state_to_opc restore_state_to_opc_avr
1293-
1294-
#define reg_read reg_read_avr
1295-
#define reg_write reg_write_avr
1296-
#define uc_init uc_init_avr
12971360
#endif

qemu/configure

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -498,6 +498,8 @@ elif check_define __tricore__ ; then
498498
cpu="tricore"
499499
elif check_define __AVR__ ; then
500500
cpu="avr"
501+
elif check_define __loongarch64 ; then
502+
cpu="loongarch64"
501503
else
502504
cpu=$(uname -m)
503505
fi
@@ -545,6 +547,10 @@ case "$cpu" in
545547
cpu="avr"
546548
supported_cpu="yes"
547549
;;
550+
loongarch64)
551+
cpu="loongarch64"
552+
supported_cpu="yes"
553+
;;
548554
*)
549555
# This will result in either an error or falling back to TCI later
550556
ARCH=unknown
@@ -859,6 +865,11 @@ case "$cpu" in
859865
CPU_CFLAGS="-m64 -mcx16"
860866
QEMU_LDFLAGS="-m64 $QEMU_LDFLAGS"
861867
;;
868+
loongarch*)
869+
CPU_CFLAGS=""
870+
QEMU_LDFLAGS=" $QEMU_LDFLAGS"
871+
;;
872+
862873
x32)
863874
CPU_CFLAGS="-mx32"
864875
QEMU_LDFLAGS="-mx32 $QEMU_LDFLAGS"
@@ -2680,6 +2691,11 @@ case "$target_name" in
26802691
mttcg="yes"
26812692
TARGET_SYSTBL_ABI=i386
26822693
;;
2694+
loongarch64)
2695+
mttcg="yes"
2696+
TARGET_ARCH=loongarch64
2697+
TARGET_SYSTBL_ABI=common,64
2698+
;;
26832699
x86_64)
26842700
TARGET_BASE_ARCH=i386
26852701
TARGET_SYSTBL_ABI=common,64

qemu/include/elf.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,7 @@ typedef struct mips_elf_abiflags_v0 {
176176

177177
#define EM_NANOMIPS 249 /* Wave Computing nanoMIPS */
178178

179+
#define EM_LOONGARCH 258 /* LoongArch */
179180
/*
180181
* This is an interim value that we will use until the committee comes
181182
* up with a final number.

0 commit comments

Comments
 (0)