From a46a1ad097419aeea7350987dd95230f50d90392 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Fri, 15 Nov 2024 08:53:41 +0000
Subject: [PATCH] 固定GMAC1 网卡名为 eth3
---
kernel/arch/arm/kernel/entry-common.S | 79 +++++++++++++++++++++++++++++++++++++++
1 files changed, 79 insertions(+), 0 deletions(-)
diff --git a/kernel/arch/arm/kernel/entry-common.S b/kernel/arch/arm/kernel/entry-common.S
index 9b3c737..7a75a49 100644
--- a/kernel/arch/arm/kernel/entry-common.S
+++ b/kernel/arch/arm/kernel/entry-common.S
@@ -3,6 +3,7 @@
* linux/arch/arm/kernel/entry-common.S
*
* Copyright (C) 2000 Russell King
+ * Copyright (C) 2005 Stelian Pop.
*/
#include <asm/assembler.h>
@@ -12,6 +13,7 @@
#include <asm/memory.h>
#ifdef CONFIG_AEABI
#include <asm/unistd-oabi.h>
+#include <uapi/asm-generic/dovetail.h>
#endif
.equ NR_syscalls, __NR_syscalls
@@ -54,6 +56,8 @@
blne addr_limit_check_failed
ldr r1, [tsk, #TI_FLAGS] @ re-check for syscall tracing
movs r1, r1, lsl #16
+ ldr r2, =#_TIF_SYSCALL_WORK | _TIF_WORK_MASK
+ ands r2, r1, r2
bne fast_work_pending
@@ -91,6 +95,8 @@
blne addr_limit_check_failed
ldr r1, [tsk, #TI_FLAGS] @ re-check for syscall tracing
movs r1, r1, lsl #16
+ ldr r2, =#_TIF_SYSCALL_WORK | _TIF_WORK_MASK
+ ands r2, r1, r2
beq no_work_pending
UNWIND(.fnend )
ENDPROC(ret_fast_syscall)
@@ -132,6 +138,8 @@
blne addr_limit_check_failed
ldr r1, [tsk, #TI_FLAGS]
movs r1, r1, lsl #16
+ ldr r2, =#_TIF_WORK_MASK
+ ands r2, r1, r2
bne slow_work_pending
no_work_pending:
asm_trace_hardirqs_on save = 0
@@ -143,6 +151,10 @@
restore_user_regs fast = 0, offset = 0
ENDPROC(ret_to_user_from_irq)
ENDPROC(ret_to_user)
+ENTRY(fast_ret_to_user)
+ disable_irq_notrace @ disable interrupts
+ b no_work_pending
+ENDPROC(fast_ret_to_user)
/*
* This is how we return from a fork.
@@ -265,6 +277,9 @@
eor scno, scno, #__NR_SYSCALL_BASE @ check OS number
#endif
get_thread_info tsk
+#ifdef CONFIG_DOVETAIL
+ str scno, [tsk, #TI_SYSCALL]
+#endif
/*
* Reload the registers that may have been corrupted on entry to
* the syscall assembly (by tracing or context tracking.)
@@ -272,6 +287,70 @@
TRACE( ldmia sp, {r0 - r3} )
local_restart:
+#ifdef CONFIG_DOVETAIL
+ ldr r10, [tsk, #TI_LOCAL_FLAGS] @ tsk(r10) is callee-saved
+#ifdef CONFIG_IPIPE_COMPAT
+ ldr r0, =#0xf0042 @ old syscall signature
+ cmp scno, r0
+ bne 1f
+ add scno, scno, #__OOB_SYSCALL_BIT @ force in oob marker
+ b fastcall_try
+1:
+#endif
+#ifdef CONFIG_DOVETAIL_LEGACY_SYSCALL_RANGE
+ ldr r0, =#__OOB_SYSCALL_BIT
+ ands r0, scno, r0
+ bne fastcall_try
+#endif
+ cmp scno, #__NR_prctl
+ bne slow_path
+ ldr r0, [sp, #S_OLD_R0]
+ tst r0, #__OOB_SYSCALL_BIT
+ beq slow_path
+fastcall_try:
+ tst r10, #_TLF_OOB
+ beq slow_path
+ mov r0, sp @ regs
+ bl handle_oob_syscall
+ ldr r10, [tsk, #TI_LOCAL_FLAGS]
+ tst r0, r0
+ beq slow_path
+ tst r10, #_TLF_OOB
+ bne fastcall_exit_check @ check for MAYDAY
+ bl sync_inband_irqs
+ b ret_slow_syscall
+fastcall_exit_check:
+ ldr r10, [tsk, #TI_FLAGS]
+ tst r10, #_TIF_MAYDAY
+ beq fast_ret_to_user
+ mov r0, sp
+ bl dovetail_call_mayday
+ b fast_ret_to_user
+slow_path:
+ tst r10, #_TLF_DOVETAIL
+ bne pipeline_syscall
+#ifdef CONFIG_DOVETAIL_LEGACY_SYSCALL_RANGE
+ ldr r0, =#__OOB_SYSCALL_BIT
+ ands r0, scno, r0
+ bne pipeline_syscall
+#endif
+ cmp scno, #__NR_prctl
+ bne root_syscall
+ ldr r0, [sp, #S_OLD_R0]
+ tst r0, #__OOB_SYSCALL_BIT
+ beq root_syscall
+pipeline_syscall:
+ mov r0, sp @ regs
+ bl __pipeline_syscall
+ ldr r10, [tsk, #TI_LOCAL_FLAGS]
+ tst r10, #_TLF_OOB
+ bne fast_ret_to_user
+ cmp r0, #0
+ bgt ret_slow_syscall
+root_syscall:
+ ldmia sp, { r0 - r3 }
+#endif /* CONFIG_DOVETAIL */
+
ldr r10, [tsk, #TI_FLAGS] @ check for syscall tracing
stmdb sp!, {r4, r5} @ push fifth and sixth args
--
Gitblit v1.6.2