1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2<html> 3<!-- Copyright (C) 1988-2021 Free Software Foundation, Inc. 4 5Permission is granted to copy, distribute and/or modify this document 6under the terms of the GNU Free Documentation License, Version 1.3 or 7any later version published by the Free Software Foundation; with the 8Invariant Sections being "Free Software" and "Free Software Needs 9Free Documentation", with the Front-Cover Texts being "A GNU Manual," 10and with the Back-Cover Texts as in (a) below. 11 12(a) The FSF's Back-Cover Text is: "You are free to copy and modify 13this GNU Manual. Buying copies from GNU Press supports the FSF in 14developing GNU and promoting software freedom." --> 15<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> 16<head> 17<title>Debugging with GDB: Sparc64</title> 18 19<meta name="description" content="Debugging with GDB: Sparc64"> 20<meta name="keywords" content="Debugging with GDB: Sparc64"> 21<meta name="resource-type" content="document"> 22<meta name="distribution" content="global"> 23<meta name="Generator" content="makeinfo"> 24<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 25<link href="index.html#Top" rel="start" title="Top"> 26<link href="Concept-Index.html#Concept-Index" rel="index" title="Concept Index"> 27<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> 28<link href="Architectures.html#Architectures" rel="up" title="Architectures"> 29<link href="S12Z.html#S12Z" rel="next" title="S12Z"> 30<link href="Nios-II.html#Nios-II" rel="previous" title="Nios II"> 31<style type="text/css"> 32<!-- 33a.summary-letter {text-decoration: none} 34blockquote.smallquotation {font-size: smaller} 35div.display {margin-left: 3.2em} 36div.example {margin-left: 3.2em} 37div.indentedblock {margin-left: 3.2em} 38div.lisp {margin-left: 3.2em} 39div.smalldisplay {margin-left: 3.2em} 40div.smallexample {margin-left: 3.2em} 41div.smallindentedblock {margin-left: 3.2em; font-size: smaller} 42div.smalllisp {margin-left: 3.2em} 43kbd {font-style:oblique} 44pre.display {font-family: inherit} 45pre.format {font-family: inherit} 46pre.menu-comment {font-family: serif} 47pre.menu-preformatted {font-family: serif} 48pre.smalldisplay {font-family: inherit; font-size: smaller} 49pre.smallexample {font-size: smaller} 50pre.smallformat {font-family: inherit; font-size: smaller} 51pre.smalllisp {font-size: smaller} 52span.nocodebreak {white-space:nowrap} 53span.nolinebreak {white-space:nowrap} 54span.roman {font-family:serif; font-weight:normal} 55span.sansserif {font-family:sans-serif; font-weight:normal} 56ul.no-bullet {list-style: none} 57--> 58</style> 59 60 61</head> 62 63<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> 64<a name="Sparc64"></a> 65<div class="header"> 66<p> 67Next: <a href="S12Z.html#S12Z" accesskey="n" rel="next">S12Z</a>, Previous: <a href="Nios-II.html#Nios-II" accesskey="p" rel="previous">Nios II</a>, Up: <a href="Architectures.html#Architectures" accesskey="u" rel="up">Architectures</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p> 68</div> 69<hr> 70<a name="Sparc64-1"></a> 71<h4 class="subsection">21.4.8 Sparc64</h4> 72<a name="index-Sparc64-support"></a> 73<a name="index-Application-Data-Integrity"></a> 74<a name="ADI-Support"></a> 75<h4 class="subsubsection">21.4.8.1 ADI Support</h4> 76 77<p>The M7 processor supports an Application Data Integrity (ADI) feature that 78detects invalid data accesses. When software allocates memory and enables 79ADI on the allocated memory, it chooses a 4-bit version number, sets the 80version in the upper 4 bits of the 64-bit pointer to that data, and stores 81the 4-bit version in every cacheline of that data. Hardware saves the latter 82in spare bits in the cache and memory hierarchy. On each load and store, 83the processor compares the upper 4 VA (virtual address) bits to the 84cacheline’s version. If there is a mismatch, the processor generates a 85version mismatch trap which can be either precise or disrupting. The trap 86is an error condition which the kernel delivers to the process as a SIGSEGV 87signal. 88</p> 89<p>Note that only 64-bit applications can use ADI and need to be built with 90ADI-enabled. 91</p> 92<p>Values of the ADI version tags, which are in granularity of a 93cacheline (64 bytes), can be viewed or modified. 94</p> 95 96<dl compact="compact"> 97<dd><a name="index-adi-examine"></a> 98</dd> 99<dt><code>adi (examine | x) [ / <var>n</var> ] <var>addr</var></code></dt> 100<dd> 101<p>The <code>adi examine</code> command displays the value of one ADI version tag per 102cacheline. 103</p> 104<p><var>n</var> is a decimal integer specifying the number in bytes; the default 105is 1. It specifies how much ADI version information, at the ratio of 1:ADI 106block size, to display. 107</p> 108<p><var>addr</var> is the address in user address space where you want <small>GDB</small> 109to begin displaying the ADI version tags. 110</p> 111<p>Below is an example of displaying ADI versions of variable "shmaddr". 112</p> 113<div class="smallexample"> 114<pre class="smallexample">(gdb) adi x/100 shmaddr 115 0xfff800010002c000: 0 0 116</pre></div> 117 118<a name="index-adi-assign"></a> 119</dd> 120<dt><code>adi (assign | a) [ / <var>n</var> ] <var>addr</var> = <var>tag</var></code></dt> 121<dd> 122<p>The <code>adi assign</code> command is used to assign new ADI version tag 123to an address. 124</p> 125<p><var>n</var> is a decimal integer specifying the number in bytes; 126the default is 1. It specifies how much ADI version information, at the 127ratio of 1:ADI block size, to modify. 128</p> 129<p><var>addr</var> is the address in user address space where you want <small>GDB</small> 130to begin modifying the ADI version tags. 131</p> 132<p><var>tag</var> is the new ADI version tag. 133</p> 134<p>For example, do the following to modify then verify ADI versions of 135variable "shmaddr": 136</p> 137<div class="smallexample"> 138<pre class="smallexample">(gdb) adi a/100 shmaddr = 7 139(gdb) adi x/100 shmaddr 140 0xfff800010002c000: 7 7 141</pre></div> 142 143</dd> 144</dl> 145 146<hr> 147<div class="header"> 148<p> 149Next: <a href="S12Z.html#S12Z" accesskey="n" rel="next">S12Z</a>, Previous: <a href="Nios-II.html#Nios-II" accesskey="p" rel="previous">Nios II</a>, Up: <a href="Architectures.html#Architectures" accesskey="u" rel="up">Architectures</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p> 150</div> 151 152 153 154</body> 155</html> 156