/* SPDX-License-Identifier: GPL-2.0 */
/*
* AArch32 user helpers .
* Based on the kuser helpers in arch / arm / kernel / entry - armv . S .
*
* Copyright ( C ) 2005 - 2011 Nicolas Pitre < nico @ fluxnic . net >
* Copyright ( C ) 2012 - 2018 ARM Ltd .
*
* The kuser helpers below are mapped at a fixed address by
* aarch32_setup_additional_pages ( ) and are provided for compatibility
* reasons with 32 bit ( aarch32 ) applications that need them .
*
* See Documentation / arch / arm / kernel_user_helpers . rst for formal definitions .
*/
#include <asm/unistd.h>
.section .rodata
.align 5
.globl __kuser_helper_start
__kuser_helper_start:
__kuser_cmpxchg64: // 0 xffff0f60
.inst 0 xe92d00f0 // push {r4, r5, r6, r7}
.inst 0 xe1c040d0 // ldrd r4, r5, [r0]
.inst 0 xe1c160d0 // ldrd r6, r7, [r1]
.inst 0 xe1b20f9f // 1 : ldrexd r0, r1, [r2]
.inst 0 xe0303004 // eors r3, r0, r4
.inst 0 x00313005 // eoreqs r3, r1, r5
.inst 0 x01a23e96 // stlexdeq r3, r6, [r2]
.inst 0 x03330001 // teqeq r3, #1
.inst 0 x0afffff9 // beq 1 b
.inst 0 xf57ff05b // dmb ish
.inst 0 xe2730000 // rsbs r0, r3, #0
.inst 0 xe8bd00f0 // pop {r4, r5, r6, r7}
.inst 0 xe12fff1e // bx lr
.align 5
__kuser_memory_barrier: // 0 xffff0fa0
.inst 0 xf57ff05b // dmb ish
.inst 0 xe12fff1e // bx lr
.align 5
__kuser_cmpxchg: // 0 xffff0fc0
.inst 0 xe1923f9f // 1 : ldrex r3, [r2]
.inst 0 xe0533000 // subs r3, r3, r0
.inst 0 x01823e91 // stlexeq r3, r1, [r2]
.inst 0 x03330001 // teqeq r3, #1
.inst 0 x0afffffa // beq 1 b
.inst 0 xf57ff05b // dmb ish
.inst 0 xe2730000 // rsbs r0, r3, #0
.inst 0 xe12fff1e // bx lr
.align 5
__kuser_get_tls: // 0 xffff0fe0
.inst 0 xee1d0f70 // mrc p15, 0 , r0, c13, c0, 3
.inst 0 xe12fff1e // bx lr
.rep 5
.word 0
.endr
__kuser_helper_version: // 0 xffff0ffc
.word ((__kuser_helper_end - __kuser_helper_start) >> 5 )
.globl __kuser_helper_end
__kuser_helper_end:
Messung V0.5 in Prozent C=97 H=100 G=98
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-09-28)
¤
*© Formatika GbR, Deutschland