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

Quelle  asm-extable.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_EXTABLE_H
#define __ASM_EXTABLE_H

#include <linux/stringify.h>
#include <linux/bits.h>
#include <asm/asm-const.h>

#define EX_TYPE_NONE  0
#define EX_TYPE_FIXUP  1
#define EX_TYPE_BPF  2
#define EX_TYPE_UA_FAULT 3
#define EX_TYPE_UA_LOAD_REG 5
#define EX_TYPE_UA_LOAD_REGPAIR 6
#define EX_TYPE_ZEROPAD  7
#define EX_TYPE_FPC  8
#define EX_TYPE_UA_MVCOS_TO 9
#define EX_TYPE_UA_MVCOS_FROM 10

#define EX_DATA_REG_ERR_SHIFT 0
#define EX_DATA_REG_ERR  GENMASK(3, 0)

#define EX_DATA_REG_ADDR_SHIFT 4
#define EX_DATA_REG_ADDR GENMASK(7, 4)

#define EX_DATA_LEN_SHIFT 8
#define EX_DATA_LEN  GENMASK(11, 8)

#define __EX_TABLE(_section, _fault, _target, _type, _regerr, _regaddr, _len) \
 stringify_in_c(.section _section,"a";)     \
 stringify_in_c(.balign 4;)      \
 stringify_in_c(.long (_fault) - .;)     \
 stringify_in_c(.long (_target) - .;)     \
 stringify_in_c(.short (_type);)     \
 stringify_in_c(.macro extable_reg regerr, regaddr;)   \
 stringify_in_c(.set .Lfound, 0;)     \
 stringify_in_c(.set .Lcurr, 0;)     \
 stringify_in_c(.irp rs,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15;) \
 stringify_in_c(  .ifc "\regerr""%%r\rs";)   \
 stringify_in_c(   .set .Lfound, 1;)   \
 stringify_in_c(   .set .Lregerr, .Lcurr;)  \
 stringify_in_c(  .endif;)     \
 stringify_in_c(  .set .Lcurr, .Lcurr+1;)   \
 stringify_in_c(.endr;)       \
 stringify_in_c(.ifne (.Lfound != 1);)    \
 stringify_in_c(  .error "extable_reg: bad register argument1";) \
 stringify_in_c(.endif;)       \
 stringify_in_c(.set .Lfound, 0;)     \
 stringify_in_c(.set .Lcurr, 0;)     \
 stringify_in_c(.irp rs,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15;) \
 stringify_in_c(  .ifc "\regaddr""%%r\rs";)   \
 stringify_in_c(   .set .Lfound, 1;)   \
 stringify_in_c(   .set .Lregaddr, .Lcurr;)  \
 stringify_in_c(  .endif;)     \
 stringify_in_c(  .set .Lcurr, .Lcurr+1;)   \
 stringify_in_c(.endr;)       \
 stringify_in_c(.ifne (.Lfound != 1);)    \
 stringify_in_c(  .error "extable_reg: bad register argument2";) \
 stringify_in_c(.endif;)       \
 stringify_in_c(.short .Lregerr << EX_DATA_REG_ERR_SHIFT |  \
    .Lregaddr << EX_DATA_REG_ADDR_SHIFT |  \
    _len << EX_DATA_LEN_SHIFT;)   \
 stringify_in_c(.endm;)       \
 stringify_in_c(extable_reg _regerr,_regaddr;)    \
 stringify_in_c(.purgem extable_reg;)     \
 stringify_in_c(.previous)

#define EX_TABLE(_fault, _target)     \
 __EX_TABLE(__ex_table, _fault, _target, EX_TYPE_FIXUP, __stringify(%%r0), __stringify(%%r0), 0)

#define EX_TABLE_AMODE31(_fault, _target)    \
 __EX_TABLE(.amode31.ex_table, _fault, _target, EX_TYPE_FIXUP, __stringify(%%r0), __stringify(%%r0), 0)

#define EX_TABLE_UA_FAULT(_fault, _target, _regerr)   \
 __EX_TABLE(__ex_table, _fault, _target, EX_TYPE_UA_FAULT, _regerr, _regerr, 0)

#define EX_TABLE_UA_LOAD_REG(_fault, _target, _regerr, _regzero) \
 __EX_TABLE(__ex_table, _fault, _target, EX_TYPE_UA_LOAD_REG, _regerr, _regzero, 0)

#define EX_TABLE_UA_LOAD_REGPAIR(_fault, _target, _regerr, _regzero) \
 __EX_TABLE(__ex_table, _fault, _target, EX_TYPE_UA_LOAD_REGPAIR, _regerr, _regzero, 0)

#define EX_TABLE_ZEROPAD(_fault, _target, _regdata, _regaddr)  \
 __EX_TABLE(__ex_table, _fault, _target, EX_TYPE_ZEROPAD, _regdata, _regaddr, 0)

#define EX_TABLE_FPC(_fault, _target)     \
 __EX_TABLE(__ex_table, _fault, _target, EX_TYPE_FPC, __stringify(%%r0), __stringify(%%r0), 0)

#define EX_TABLE_UA_MVCOS_TO(_fault, _target)    \
 __EX_TABLE(__ex_table, _fault, _target, EX_TYPE_UA_MVCOS_TO, __stringify(%%r0), __stringify(%%r0), 0)

#define EX_TABLE_UA_MVCOS_FROM(_fault, _target)    \
 __EX_TABLE(__ex_table, _fault, _target, EX_TYPE_UA_MVCOS_FROM, __stringify(%%r0), __stringify(%%r0), 0)

#endif /* __ASM_EXTABLE_H */

Messung V0.5
C=98 H=60 G=81

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