Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Linux/tools/testing/selftests/arm64/mte/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 2 kB image not shown  

Quelle  mte_helper.S   Sprache: Sparc

 
/* SPDX-License-Identifier: GPL-2.0 */
/* Copyright (C) 2020 ARM Limited */

#include "mte_def.h"

.arch armv8.5-a+memtag

#define ENTRY(name) \
 .globl name ;\
 .p2align 2;\
 .type name, @function ;\
name:

#define ENDPROC(name) \
 .size name, .-name ;

 .text
/*
 * mte_insert_random_tag: Insert random tag and might be same as the source tag if
 *   the source pointer has it.
 * Input:
 * x0 - source pointer with a tag/no-tag
 * Return:
 * x0 - pointer with random tag
 */

ENTRY(mte_insert_random_tag)
 irg x0, x0, xzr
 ret
ENDPROC(mte_insert_random_tag)

/*
 * mte_insert_new_tag: Insert new tag and different from the source tag if
 *        source pointer has it.
 * Input:
 * x0 - source pointer with a tag/no-tag
 * Return:
 * x0 - pointer with random tag
 */

ENTRY(mte_insert_new_tag)
 gmi x1, x0, xzr
 irg x0, x0, x1
 ret
ENDPROC(mte_insert_new_tag)

/*
 * mte_get_tag_address: Get the tag from given address.
 * Input:
 * x0 - source pointer
 * Return:
 * x0 - pointer with appended tag
 */

ENTRY(mte_get_tag_address)
 ldg x0, [x0]
 ret
ENDPROC(mte_get_tag_address)

/*
 * mte_set_tag_address_range: Set the tag range from the given address
 * Input:
 * x0 - source pointer with tag data
 * x1 - range
 * Return:
 * none
 */

ENTRY(mte_set_tag_address_range)
 cbz x1, 2f
1:
 stg x0, [x0, #0x0]
 add x0, x0, #MT_GRANULE_SIZE
 sub x1, x1, #MT_GRANULE_SIZE
 cbnz x1, 1b
2:
 ret
ENDPROC(mte_set_tag_address_range)

/*
 * mt_clear_tag_address_range: Clear the tag range from the given address
 * Input:
 * x0 - source pointer with tag data
 * x1 - range
 * Return:
 * none
 */

ENTRY(mte_clear_tag_address_range)
 cbz x1, 2f
1:
 stzg x0, [x0, #0x0]
 add x0, x0, #MT_GRANULE_SIZE
 sub x1, x1, #MT_GRANULE_SIZE
 cbnz x1, 1b
2:
 ret
ENDPROC(mte_clear_tag_address_range)

/*
 * mte_enable_pstate_tco: Enable PSTATE.TCO (tag check override) field
 * Input:
 * none
 * Return:
 * none
 */

ENTRY(mte_enable_pstate_tco)
 msr tco, #MT_PSTATE_TCO_EN
 ret
ENDPROC(mte_enable_pstate_tco)

/*
 * mte_disable_pstate_tco: Disable PSTATE.TCO (tag check override) field
 * Input:
 * none
 * Return:
 * none
 */

ENTRY(mte_disable_pstate_tco)
 msr tco, #MT_PSTATE_TCO_DIS
 ret
ENDPROC(mte_disable_pstate_tco)

/*
 * mte_get_pstate_tco: Get PSTATE.TCO (tag check override) field
 * Input:
 * none
 * Return:
 * x0
 */

ENTRY(mte_get_pstate_tco)
 mrs x0, tco
 ubfx x0, x0, #MT_PSTATE_TCO_SHIFT, #1
 ret
ENDPROC(mte_get_pstate_tco)

Messung V0.5
C=95 H=87 G=90

¤ Dauer der Verarbeitung: 0.9 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.