Unfortunately for personal reasons I am not able to attend the Cauldron this year, but I still can do a bit from home. ;-)
This was one of three reminaining (older) pages that did not fully pass validation as HTML 5, but of course displayed just fine. Committed. Gerald Convert to CSS / HTML 5, removing cellpadding=, valign=, and align= attributes, and simplifying formatting a bit (making it nicer as well). Index: gcc-3.4/mips-abi.html =================================================================== RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-3.4/mips-abi.html,v retrieving revision 1.6 diff -u -r1.6 mips-abi.html --- gcc-3.4/mips-abi.html 1 Sep 2018 23:42:03 -0000 1.6 +++ gcc-3.4/mips-abi.html 2 Sep 2018 22:12:56 -0000 @@ -27,55 +27,55 @@ <h2>A. Small aggregate arguments (1)</h2> -<table cellpadding="4"> - <tr valign="top"> - <th align="right">Affected ABIs</th> +<table class="padding5"> + <tr> + <th class="right">Affected ABIs</th> <td>o32</td> </tr> - <tr valign="top"> - <th align="right">Endianness</th> + <tr> + <th class="right">Endianness</th> <td>little</td> </tr> - <tr valign="top"> - <th align="right">Conditions</th> + <tr> + <th class="right">Conditions</th> <td><ul> <li>An aggregate argument is passed in a register; and</li> <li>that argument is smaller than 4 bytes.</li> </ul></td> </tr> - <tr valign="top"> - <th align="right">Old behavior</th> + <tr> + <th class="right">Old behavior</th> <td>The register was padded at the least significant end.</td> </tr> - <tr valign="top"> - <th align="right">New behavior</th> + <tr> + <th class="right">New behavior</th> <td>The register is padded at the most significant end.</td> </tr> - <tr valign="top"> - <th align="right">Example</th> + <tr> + <th class="right">Example</th> <td><pre>struct s { char c[2]; }; void f (struct s x);</pre> <p><code>x</code> is passed in argument register <code>$4</code>, which is laid out as follows:</p> - <table cellpadding="4"> - <tr align="center"> + <table class="padding5"> + <tr class="center"> <th></th> <th>7-0</th> <th>15-8</th> <th>23-16</th> <th>31-24</th> </tr> - <tr align="center"> - <th align="left">Old behavior</th> + <tr class="center"> + <th class="left">Old behavior</th> <td>padding</td> <td>padding</td> <td>c[0]</td> <td>c[1]</td> </tr> - <tr align="center"> - <th align="left">New behavior</th> + <tr class="center"> + <th class="left">New behavior</th> <td>c[0]</td> <td>c[1]</td> <td>padding</td> <td>padding</td> </tr> </table></td> @@ -84,58 +84,58 @@ <h2 id="B">B. Small aggregate arguments (2)</h2> -<table cellpadding="4"> - <tr valign="top"> - <th align="right">Affected ABIs</th> +<table class="padding5"> + <tr> + <th class="right">Affected ABIs</th> <td>n32 and n64</td> </tr> - <tr valign="top"> - <th align="right">Endianness</th> + <tr> + <th class="right">Endianness</th> <td>big</td> </tr> - <tr valign="top"> - <th align="right">Conditions</th> + <tr> + <th class="right">Conditions</th> <td><ul> <li>An aggregate argument is passed in a register; and</li> <li>that argument is smaller than 8 bytes.</li> </ul></td> </tr> - <tr valign="top"> - <th align="right">Old behavior</th> + <tr> + <th class="right">Old behavior</th> <td>The register was padded at the most significant end.</td> </tr> - <tr valign="top"> - <th align="right">New behavior</th> + <tr> + <th class="right">New behavior</th> <td>The register is padded at the least significant end.</td> </tr> - <tr valign="top"> - <th align="right">Example</th> + <tr> + <th class="right">Example</th> <td><pre>struct s { char c[2]; }; void f (struct s x);</pre> <p><code>x</code> is passed in argument register <code>$4</code>, which is laid out as follows:</p> - <table cellpadding="4"> - <tr align="center"> + <table class="padding5"> + <tr class="center"> <th></th> <th>63-56</th> <th>55-48</th> <th>47-40</th> <th>39-32</th> <th>31-24</th> <th>23-16</th> <th>15-8</th> <th>7-0</th> </tr> - <tr align="center"> - <th align="left">Old behavior</th> + <tr class="center"> + <th class="left">Old behavior</th> <td>padding</td> <td>padding</td> <td>padding</td> <td>padding</td> <td>padding</td> <td>padding</td> <td>c[0]</td> <td>c[1]</td> </tr> - <tr align="center"> - <th align="left">New behavior</th> + <tr class="center"> + <th class="left">New behavior</th> <td>c[0]</td> <td>c[1]</td> <td>padding</td> <td>padding</td> <td>padding</td> <td>padding</td> <td>padding</td> <td>padding</td> </tr> @@ -145,19 +145,19 @@ <h2>C. Large aggregate arguments</h2> -<table cellpadding="4"> - <tr valign="top"> - <th align="right">Affected ABIs</th> +<table class="padding5"> + <tr> + <th class="right">Affected ABIs</th> <td>n32 and n64</td> </tr> - <tr valign="top"> - <th align="right">Endianness</th> + <tr> + <th class="right">Endianness</th> <td>big</td> </tr> - <tr valign="top"> - <th align="right">Conditions</th> + <tr> + <th class="right">Conditions</th> <td><ul> <li>An aggregate argument is passed to a function;</li> <li>the aggregate's size is not a multiple of 8 bytes; and</li> @@ -166,18 +166,18 @@ </ul></td> </tr> - <tr valign="top"> - <th align="right">Old behavior</th> + <tr> + <th class="right">Old behavior</th> <td>The argument was passed by reference.</td> </tr> - <tr valign="top"> - <th align="right">New behavior</th> + <tr> + <th class="right">New behavior</th> <td>The argument is passed by value.</td> </tr> - <tr valign="top"> - <th align="right">Example</th> + <tr> + <th class="right">Example</th> <td><pre>struct s { int i[17]; }; void f (struct s x);</pre> @@ -195,19 +195,19 @@ <h2>D. Single-field structure arguments</h2> -<table cellpadding="4"> - <tr valign="top"> - <th align="right">Affected ABIs</th> +<table class="padding5"> + <tr> + <th class="right">Affected ABIs</th> <td>o32, o64, n32 and n64</td> </tr> - <tr valign="top"> - <th align="right">Endianness</th> + <tr> + <th class="right">Endianness</th> <td>either</td> </tr> - <tr valign="top"> - <th align="right">Conditions</th> + <tr> + <th class="right">Conditions</th> <td><ul> <li>A structure containing a single field is passed by value; and</li> @@ -215,24 +215,24 @@ </ul></td> </tr> - <tr valign="top"> - <th align="right">Old behavior</th> + <tr> + <th class="right">Old behavior</th> <td>The structure was treated like a scalar value of the same floating-point type. For example, a structure containing a <code>float</code> field was treated in the same way as a scalar <code>float</code> value.</td> </tr> - <tr valign="top"> - <th align="right">New behavior</th> + <tr> + <th class="right">New behavior</th> <td>There is no special treatment for such structures. Note however that the usual n32 and n64 rules still hold: naturally-aligned fields of type <code>double</code> are passed in floating-point registers.</td> </tr> - <tr valign="top"> - <th align="right">Example</th> + <tr> + <th class="right">Example</th> <td><pre>struct s { float f; }; void f (struct s x);</pre> @@ -244,19 +244,19 @@ <h2 id="E">E. Structure return values</h2> -<table cellpadding="4"> - <tr valign="top"> - <th align="right">Affected ABIs</th> +<table class="padding5"> + <tr> + <th class="right">Affected ABIs</th> <td>n32 and n64</td> </tr> - <tr valign="top"> - <th align="right">Endianness</th> + <tr> + <th class="right">Endianness</th> <td>big</td> </tr> - <tr valign="top"> - <th align="right">Conditions</th> + <tr> + <th class="right">Conditions</th> <td><ul> <li>An aggregate is returned by value;</li> <li>that aggregate is smaller than 16 bytes;</li> @@ -269,39 +269,39 @@ </ul></td> </tr> - <tr valign="top"> - <th align="right">Old behavior</th> + <tr> + <th class="right">Old behavior</th> <td>The return register was padded at the most significant end.</td> </tr> - <tr valign="top"> - <th align="right">New behavior</th> + <tr> + <th class="right">New behavior</th> <td>The return register is padded at the least significant end.</td> </tr> - <tr valign="top"> - <th align="right">Example</th> + <tr> + <th class="right">Example</th> <td><pre>struct s { char c[3]; }; struct s f ();</pre> <p>f() returns its value in <code>$2</code>, which is laid out as follows:</p> - <table cellpadding="4"> - <tr align="center"> + <table class="padding5"> + <tr class="center"> <th></th> <th>63-56</th> <th>55-48</th> <th>47-40</th> <th>39-32</th> <th>31-24</th> <th>23-16</th> <th>15-8</th> <th>7-0</th> </tr> - <tr align="center"> - <th align="left">Old behavior</th> + <tr class="center"> + <th class="left">Old behavior</th> <td>padding</td> <td>padding</td> <td>padding</td> <td>padding</td> <td>padding</td> <td>c[0]</td> <td>c[1]</td> <td>c[2]</td> </tr> - <tr align="center"> - <th align="left">New behavior</th> + <tr class="center"> + <th class="left">New behavior</th> <td>c[0]</td> <td>c[1]</td> <td>c[2]</td> <td>padding</td> <td>padding</td> <td>padding</td> <td>padding</td> <td>padding</td> </tr> @@ -311,35 +311,35 @@ <h2>F. Complex return values</h2> -<table cellpadding="4"> - <tr valign="top"> - <th align="right">Affected ABIs</th> +<table class="padding5"> + <tr> + <th class="right">Affected ABIs</th> <td>n32 and n64</td> </tr> - <tr valign="top"> - <th align="right">Endianness</th> + <tr> + <th class="right">Endianness</th> <td>either</td> </tr> - <tr valign="top"> - <th align="right">Conditions</th> + <tr> + <th class="right">Conditions</th> <td>A function returns a complex <code>float</code> or <code>double</code>.</td> </tr> - <tr valign="top"> - <th align="right">Old behavior</th> + <tr> + <th class="right">Old behavior</th> <td>The value was returned in <code>$f0</code> and <code>$f1</code>.</td> </tr> - <tr valign="top"> - <th align="right">New behavior</th> + <tr> + <th class="right">New behavior</th> <td>The value is returned in <code>$f0</code> and <code>$f2</code>.</td> </tr> - <tr valign="top"> - <th align="right">Example</th> + <tr> + <th class="right">Example</th> <td><pre>_Complex float f ();</pre></td> </tr> </table>