Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


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.2 Sekunden  ¤

*© 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.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge