Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Linux/arch/arm/mm/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 2 kB image not shown  

Quelle  tlb.c   Sprache: C

 
// SPDX-License-Identifier: GPL-2.0-only
// Copyright 2024 Google LLC
// Author: Ard Biesheuvel <ardb@google.com>

#include <linux/types.h>
#include <asm/tlbflush.h>

#ifdef CONFIG_CPU_TLB_V4WT
void v4_flush_user_tlb_range(unsigned longunsigned longstruct vm_area_struct *);
void v4_flush_kern_tlb_range(unsigned longunsigned long);

struct cpu_tlb_fns v4_tlb_fns __initconst = {
 .flush_user_range = v4_flush_user_tlb_range,
 .flush_kern_range = v4_flush_kern_tlb_range,
 .tlb_flags  = v4_tlb_flags,
};
#endif

#ifdef CONFIG_CPU_TLB_V4WB
void v4wb_flush_user_tlb_range(unsigned longunsigned longstruct vm_area_struct *);
void v4wb_flush_kern_tlb_range(unsigned longunsigned long);

struct cpu_tlb_fns v4wb_tlb_fns __initconst = {
 .flush_user_range = v4wb_flush_user_tlb_range,
 .flush_kern_range = v4wb_flush_kern_tlb_range,
 .tlb_flags  = v4wb_tlb_flags,
};
#endif

#if defined(CONFIG_CPU_TLB_V4WBI) || defined(CONFIG_CPU_TLB_FEROCEON)
void v4wbi_flush_user_tlb_range(unsigned longunsigned longstruct vm_area_struct *);
void v4wbi_flush_kern_tlb_range(unsigned longunsigned long);

struct cpu_tlb_fns v4wbi_tlb_fns __initconst = {
 .flush_user_range = v4wbi_flush_user_tlb_range,
 .flush_kern_range = v4wbi_flush_kern_tlb_range,
 .tlb_flags  = v4wbi_tlb_flags,
};
#endif

#ifdef CONFIG_CPU_TLB_V6
void v6wbi_flush_user_tlb_range(unsigned longunsigned longstruct vm_area_struct *);
void v6wbi_flush_kern_tlb_range(unsigned longunsigned long);

struct cpu_tlb_fns v6wbi_tlb_fns __initconst = {
 .flush_user_range = v6wbi_flush_user_tlb_range,
 .flush_kern_range = v6wbi_flush_kern_tlb_range,
 .tlb_flags  = v6wbi_tlb_flags,
};
#endif

#ifdef CONFIG_CPU_TLB_V7
void v7wbi_flush_user_tlb_range(unsigned longunsigned longstruct vm_area_struct *);
void v7wbi_flush_kern_tlb_range(unsigned longunsigned long);

struct cpu_tlb_fns v7wbi_tlb_fns __initconst = {
 .flush_user_range = v7wbi_flush_user_tlb_range,
 .flush_kern_range = v7wbi_flush_kern_tlb_range,
 .tlb_flags  = IS_ENABLED(CONFIG_SMP) ? v7wbi_tlb_flags_smp
        : v7wbi_tlb_flags_up,
};

#ifdef CONFIG_SMP_ON_UP
/* This will be run-time patched so the offset better be right */
static_assert(offsetof(struct cpu_tlb_fns, tlb_flags) == 8);

asm(" .pushsection \".alt.smp.init\", \"a\" \n" \
    " .align 2 \n" \
    " .long v7wbi_tlb_fns + 8 - . \n" \
    " .long "   __stringify(v7wbi_tlb_flags_up) " \n" \
    " .popsection \n");
#endif
#endif

#ifdef CONFIG_CPU_TLB_FA
void fa_flush_user_tlb_range(unsigned longunsigned longstruct vm_area_struct *);
void fa_flush_kern_tlb_range(unsigned longunsigned long);

struct cpu_tlb_fns fa_tlb_fns __initconst = {
 .flush_user_range = fa_flush_user_tlb_range,
 .flush_kern_range = fa_flush_kern_tlb_range,
 .tlb_flags  = fa_tlb_flags,
};
#endif

Messung V0.5
C=97 H=96 G=96

¤ Dauer der Verarbeitung: 0.0 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.