Skip to content

Commit 80465f1

Browse files
committed
Add loongarch64 support for cef build
1 parent f09539f commit 80465f1

10 files changed

+15500
-2
lines changed

cmake/cef_variables.cmake.in

+2
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ if(NOT DEFINED PROJECT_ARCH)
2929
if(("${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "arm64") OR
3030
("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "ARM64"))
3131
set(PROJECT_ARCH "arm64")
32+
elseif(OS_LINUX AND "${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "loongarch64")
33+
set(PROJECT_ARCH "loongarch64")
3234
elseif(CMAKE_SIZEOF_VOID_P MATCHES 8)
3335
set(PROJECT_ARCH "x86_64")
3436
else()

include/base/cef_build.h

+5
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,11 @@
243243
#define ARCH_CPU_32_BITS 1
244244
#define ARCH_CPU_BIG_ENDIAN 1
245245
#endif
246+
#elif defined(__loongarch64)
247+
#define ARCH_CPU_LOONGARCH_FAMILY 1
248+
#define ARCH_CPU_LOONGARCH64 1
249+
#define ARCH_CPU_64_BITS 1
250+
#define ARCH_CPU_LITTLE_ENDIAN 1
246251
#else
247252
#error Please add support for your architecture in include/base/cef_build.h
248253
#endif

patch/patch.cfg

+24
Original file line numberDiff line numberDiff line change
@@ -750,5 +750,29 @@ patches = [
750750
# https://github.com/chromiumembedded/cef/issues/3758
751751
# https://chromium-review.googlesource.com/c/chromium/src/+/5894650
752752
'name': 'chrome_browser_task_manager_5894650'
753+
},
754+
{
755+
# Add loongarch64 support in src dir
756+
'name': 'loongarch64_support_src_for_cef'
757+
},
758+
{
759+
# Add loongarch64 support in third_party/boringssl/src
760+
'name': 'loongarch64_support_boringssl_for_cef',
761+
'path': 'third_party/boringssl/src'
762+
},
763+
{
764+
# Add loongarch64 fix in third_party/lss
765+
'name': 'loongarch64_fix_lss_for_cef',
766+
'path': 'third_party/lss'
767+
},
768+
{
769+
# Add loongarch64 support in third_party/swiftshader
770+
'name': 'loongarch64_add_swiftshader_for_cef',
771+
'path': third_party/swiftshader'
772+
},
773+
{
774+
# Add loongarch64 vector in third_party/ffmpeg
775+
'name': 'loongarch64_vector_ffmpeg_for_cef',
776+
'path': 'third_party/ffmpeg'
753777
}
754778
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
diff --git src/Reactor/BUILD.gn src/Reactor/BUILD.gn
2+
index 67dfeb0ec..dcb13614a 100644
3+
--- src/Reactor/BUILD.gn
4+
+++ src/Reactor/BUILD.gn
5+
@@ -307,7 +307,7 @@ if (supports_subzero) {
6+
7+
if (supports_llvm) {
8+
swiftshader_source_set("swiftshader_llvm_reactor") {
9+
- llvm_dir = "../../third_party/llvm-10.0"
10+
+ llvm_dir = "../../third_party/llvm-16.0"
11+
12+
deps = [
13+
":swiftshader_reactor_base",
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
diff --git linux_syscall_support.h linux_syscall_support.h
2+
index 99a4b44..00b3a5c 100644
3+
--- linux_syscall_support.h
4+
+++ linux_syscall_support.h
5+
@@ -3940,16 +3940,16 @@ struct kernel_statx {
6+
* So, we just have to redefine all of the _syscallX() macros.
7+
*/
8+
#undef LSS_REG
9+
- #define LSS_REG(ar,a) register int64_t __r##ar __asm__("a"#ar) = (int64_t)a
10+
+ #define LSS_REG(ar,a) register int64_t __r##ar __asm__("$a"#ar) = (int64_t)a
11+
/* syscall is like subroutine calls, all caller-saved registers may be
12+
* clobbered, we should add them to the |Clobbers| list.
13+
* a0 is not included because it's in the output list.
14+
*/
15+
- #define LSS_SYSCALL_CLOBBERS "t0", "t1", "t2", "t3", "t4", "t5", "t6", \
16+
- "t7", "t8", "memory"
17+
+ #define LSS_SYSCALL_CLOBBERS "$t0", "$t1", "$t2", "$t3", "$t4", "$t5", "$t6", \
18+
+ "$t7", "$t8", "memory"
19+
#undef LSS_BODY
20+
#define LSS_BODY(type,name,args...) \
21+
- register int64_t __res_a0 __asm__("a0"); \
22+
+ register int64_t __res_a0 __asm__("$a0"); \
23+
int64_t __res; \
24+
__asm__ __volatile__ ("li.d $a7, %1\n" \
25+
"syscall 0x0\n" \
26+
@@ -4013,12 +4013,12 @@ struct kernel_statx {
27+
void *newtls, int *child_tidptr) {
28+
int64_t __res;
29+
{
30+
- register int64_t __res_a0 __asm__("a0");
31+
- register uint64_t __flags __asm__("a0") = flags;
32+
- register void *__stack __asm__("a1") = child_stack;
33+
- register void *__ptid __asm__("a2") = parent_tidptr;
34+
- register void *__tls __asm__("a3") = newtls;
35+
- register int *__ctid __asm__("a4") = child_tidptr;
36+
+ register int64_t __res_a0 __asm__("$a0");
37+
+ register uint64_t __flags __asm__("$a0") = flags;
38+
+ register void *__stack __asm__("$a1") = child_stack;
39+
+ register void *__ptid __asm__("$a2") = parent_tidptr;
40+
+ register void *__tls __asm__("$a3") = newtls;
41+
+ register int *__ctid __asm__("$a4") = child_tidptr;
42+
__asm__ __volatile__(/* Push "arg" and "fn" onto the stack that will be
43+
* used by the child.
44+
*/
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
diff --git crypto/fipsmodule/rand/getrandom_fillin.h crypto/fipsmodule/rand/getrandom_fillin.h
2+
index 0f290e963..9c40339c0 100644
3+
--- crypto/fipsmodule/rand/getrandom_fillin.h
4+
+++ crypto/fipsmodule/rand/getrandom_fillin.h
5+
@@ -32,6 +32,8 @@
6+
#define EXPECTED_NR_getrandom 384
7+
#elif defined(OPENSSL_RISCV64)
8+
#define EXPECTED_NR_getrandom 278
9+
+#elif defined(OPENSSL_LOONG64)
10+
+#define EXPECTED_NR_getrandom 278
11+
#endif
12+
13+
#if defined(EXPECTED_NR_getrandom)
14+
diff --git include/openssl/target.h include/openssl/target.h
15+
index 2760f52ce..aa0b32a08 100644
16+
--- include/openssl/target.h
17+
+++ include/openssl/target.h
18+
@@ -54,6 +54,9 @@
19+
#define OPENSSL_32_BIT
20+
#elif defined(__myriad2__)
21+
#define OPENSSL_32_BIT
22+
+#elif defined(__loongarch64)
23+
+#define OPENSSL_64_BIT
24+
+#define OPENSSL_LOONG64
25+
#else
26+
// The list above enumerates the platforms that BoringSSL supports. For these
27+
// platforms we keep a reasonable bar of not breaking them: automated test

0 commit comments

Comments
 (0)