aboutsummaryrefslogtreecommitdiff
path: root/coverage-report/libflash/ecc.h.gcov.html
blob: 9d32c70e99ea5d039bbb0e645fd21629ad25ded9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html lang="en">

<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <title>LCOV - skiboot.info - libflash/ecc.h</title>
  <link rel="stylesheet" type="text/css" href="../gcov.css">
</head>

<body>

  <table width="100%" border=0 cellspacing=0 cellpadding=0>
    <tr><td class="title">LCOV - code coverage report</td></tr>
    <tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>

    <tr>
      <td width="100%">
        <table cellpadding=1 border=0 width="100%">
          <tr>
            <td width="10%" class="headerItem">Current view:</td>
            <td width="35%" class="headerValue"><a href="../index.html">top level</a> - <a href="index.html">libflash</a> - ecc.h<span style="font-size: 80%;"> (source / <a href="ecc.h.func-sort-c.html">functions</a>)</span></td>
            <td width="5%"></td>
            <td width="15%"></td>
            <td width="10%" class="headerCovTableHead">Hit</td>
            <td width="10%" class="headerCovTableHead">Total</td>
            <td width="15%" class="headerCovTableHead">Coverage</td>
          </tr>
          <tr>
            <td class="headerItem">Test:</td>
            <td class="headerValue">skiboot.info</td>
            <td></td>
            <td class="headerItem">Lines:</td>
            <td class="headerCovTableEntry">6</td>
            <td class="headerCovTableEntry">8</td>
            <td class="headerCovTableEntryMed">75.0 %</td>
          </tr>
          <tr>
            <td class="headerItem">Date:</td>
            <td class="headerValue">2022-05-24 17:20:14</td>
            <td></td>
            <td class="headerItem">Functions:</td>
            <td class="headerCovTableEntry">3</td>
            <td class="headerCovTableEntry">4</td>
            <td class="headerCovTableEntryMed">75.0 %</td>
          </tr>
          <tr>
            <td></td>
            <td></td>
            <td></td>
            <td class="headerItem">Branches:</td>
            <td class="headerCovTableEntry">0</td>
            <td class="headerCovTableEntry">0</td>
            <td class="headerCovTableEntryHi">-</td>
          </tr>
          <tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
        </table>
      </td>
    </tr>

    <tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
  </table>

  <table cellpadding=0 cellspacing=0 border=0>
    <tr>
      <td><br></td>
    </tr>
    <tr>
      <td>
<pre class="sourceHeading">           Branch data     Line data    Source code</pre>
<pre class="source">
<a name="1"><span class="lineNum">       1 </span>                :            : // SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later</a>
<a name="2"><span class="lineNum">       2 </span>                :            : /*</a>
<a name="3"><span class="lineNum">       3 </span>                :            :  * This is based on the hostboot ecc code</a>
<a name="4"><span class="lineNum">       4 </span>                :            :  *</a>
<a name="5"><span class="lineNum">       5 </span>                :            :  * Copyright 2013-2018 IBM Corp.</a>
<a name="6"><span class="lineNum">       6 </span>                :            :  */</a>
<a name="7"><span class="lineNum">       7 </span>                :            : </a>
<a name="8"><span class="lineNum">       8 </span>                :            : #ifndef __ECC_H</a>
<a name="9"><span class="lineNum">       9 </span>                :            : #define __ECC_H</a>
<a name="10"><span class="lineNum">      10 </span>                :            : </a>
<a name="11"><span class="lineNum">      11 </span>                :            : #include &lt;stdint.h&gt;</a>
<a name="12"><span class="lineNum">      12 </span>                :            : #include &lt;ccan/endian/endian.h&gt;</a>
<a name="13"><span class="lineNum">      13 </span>                :            : </a>
<a name="14"><span class="lineNum">      14 </span>                :            : struct ecc64 {</a>
<a name="15"><span class="lineNum">      15 </span>                :            :         beint64_t data;</a>
<a name="16"><span class="lineNum">      16 </span>                :            :         uint8_t ecc;</a>
<a name="17"><span class="lineNum">      17 </span>                :            : } __attribute__((__packed__));</a>
<a name="18"><span class="lineNum">      18 </span>                :            : </a>
<a name="19"><span class="lineNum">      19 </span>                :            : extern int memcpy_from_ecc(beint64_t *dst, struct ecc64 *src, uint64_t len);</a>
<a name="20"><span class="lineNum">      20 </span>                :            : extern int memcpy_from_ecc_unaligned(beint64_t *dst, struct ecc64 *src, uint64_t len,</a>
<a name="21"><span class="lineNum">      21 </span>                :            :                 uint8_t alignment);</a>
<a name="22"><span class="lineNum">      22 </span>                :            : </a>
<a name="23"><span class="lineNum">      23 </span>                :            : extern int memcpy_to_ecc(struct ecc64 *dst, const beint64_t *src, uint64_t len);</a>
<a name="24"><span class="lineNum">      24 </span>                :            : extern int memcpy_to_ecc_unaligned(struct ecc64 *dst, const beint64_t *src, uint64_t len,</a>
<a name="25"><span class="lineNum">      25 </span>                :            :                 uint8_t alignment);</a>
<a name="26"><span class="lineNum">      26 </span>                :            : </a>
<a name="27"><span class="lineNum">      27 </span>                :            : /*</a>
<a name="28"><span class="lineNum">      28 </span>                :            :  * Calculate the size of a buffer if ECC is added</a>
<a name="29"><span class="lineNum">      29 </span>                :            :  *</a>
<a name="30"><span class="lineNum">      30 </span>                :            :  * We add 1 byte of ecc for every 8 bytes of data.  So we need to round up to 8</a>
<a name="31"><span class="lineNum">      31 </span>                :            :  * bytes length and then add 1/8</a>
<a name="32"><span class="lineNum">      32 </span>                :            :  */</a>
<a name="33"><span class="lineNum">      33 </span>                :            : #ifndef ALIGN_UP</a>
<a name="34"><span class="lineNum">      34 </span>                :            : #define ALIGN_UP(_v, _a)        (((_v) + (_a) - 1) &amp; ~((_a) - 1))</a>
<a name="35"><span class="lineNum">      35 </span>                :            : #endif</a>
<a name="36"><span class="lineNum">      36 </span>                :            : </a>
<a name="37"><span class="lineNum">      37 </span>                :            : #define BYTES_PER_ECC 8</a>
<a name="38"><span class="lineNum">      38 </span>                :            : </a>
<a name="39"><span class="lineNum">      39 </span>                :<span class="lineCov">        119 : static inline uint64_t ecc_size(uint64_t len)</span></a>
<a name="40"><span class="lineNum">      40 </span>                :            : {</a>
<a name="41"><span class="lineNum">      41 </span>                :<span class="lineCov">        119 :         return ALIGN_UP(len, BYTES_PER_ECC) &gt;&gt; 3;</span></a>
<a name="42"><span class="lineNum">      42 </span>                :            : }</a>
<a name="43"><span class="lineNum">      43 </span>                :            : </a>
<a name="44"><span class="lineNum">      44 </span>                :<span class="lineCov">        119 : static inline uint64_t ecc_buffer_size(uint64_t len)</span></a>
<a name="45"><span class="lineNum">      45 </span>                :            : {</a>
<a name="46"><span class="lineNum">      46 </span>                :<span class="lineCov">        119 :         return ALIGN_UP(len, BYTES_PER_ECC) + ecc_size(len);</span></a>
<a name="47"><span class="lineNum">      47 </span>                :            : }</a>
<a name="48"><span class="lineNum">      48 </span>                :            : </a>
<a name="49"><span class="lineNum">      49 </span>                :            : static inline int ecc_buffer_size_check(uint64_t len)</a>
<a name="50"><span class="lineNum">      50 </span>                :            : {</a>
<a name="51"><span class="lineNum">      51 </span>                :            :         return len % (BYTES_PER_ECC + 1);</a>
<a name="52"><span class="lineNum">      52 </span>                :            : }</a>
<a name="53"><span class="lineNum">      53 </span>                :            : </a>
<a name="54"><span class="lineNum">      54 </span>                :<span class="lineNoCov">          0 : static inline uint64_t ecc_buffer_size_minus_ecc(uint64_t len)</span></a>
<a name="55"><span class="lineNum">      55 </span>                :            : {</a>
<a name="56"><span class="lineNum">      56 </span>                :<span class="lineNoCov">          0 :         return len * BYTES_PER_ECC / (BYTES_PER_ECC + 1);</span></a>
<a name="57"><span class="lineNum">      57 </span>                :            : }</a>
<a name="58"><span class="lineNum">      58 </span>                :            : </a>
<a name="59"><span class="lineNum">      59 </span>                :<span class="lineCov">        123 : static inline uint64_t ecc_buffer_align(uint64_t start, uint64_t pos)</span></a>
<a name="60"><span class="lineNum">      60 </span>                :            : {</a>
<a name="61"><span class="lineNum">      61 </span>                :<span class="lineCov">        123 :         return pos - ((pos - start) % (BYTES_PER_ECC + 1));</span></a>
<a name="62"><span class="lineNum">      62 </span>                :            : }</a>
<a name="63"><span class="lineNum">      63 </span>                :            : </a>
<a name="64"><span class="lineNum">      64 </span>                :            : #endif</a>
</pre>
      </td>
    </tr>
  </table>
  <br>

  <table width="100%" border=0 cellspacing=0 cellpadding=0>
    <tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
    <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LCOV version 1.14</a></td></tr>
  </table>
  <br>

</body>
</html>