aboutsummaryrefslogtreecommitdiff
blob: c828e835408c087f8eb1e232dbedebebc8070c7a (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
150
151
152
153
154
<?xml version="1.0" encoding="UTF-8"?>
<guide self="archs/sparc/">
<chapter>
<title>Arch specific notes  SPARC</title>
<body>

<p>
The SPARC port uses the <c>sparc</c> keyword. It focuses on <c>sun4u</c>
hardware (Sun UltraSparc systems with <c>v9</c> CPUs). <c>v8</c> processors
and 2.4 kernels should still work with Gentoo, but they are no longer supported
by the Gentoo/SPARC team.
</p>

<p>
SPARC systems are notoriously strict on aligned access: this is the most common
type of bug seen on SPARC (other than big-endian related issues), causing a
<c>SIGBUS</c> signal to be sent to the errant process. Known issues should be
linked to
<uri link="https://bugs.gentoo.org/371525">the related tracker bug</uri>.
</p>

<p>
This is usually due to supposedly clever pointer casts and type punning tricks
by the code authors.
</p>

</body>

<section>
<title>SPARC kernel and userland ABIs</title>
<body>

<p>
<c>v9</c> systems use a pure 64 bit kernel and a pure 32 bit userland. This can
cause portability problems when working with low level software if the kernel
does not provide working 32 bit compatibility interfaces.
</p>

<p>
<c>v8</c> systems use a pure 32 bit kernel and a pure 32 bit userland.
</p>

<p>
All of the above SPARC systems are big endian, nevertheless the <c>v9</c>
architecture also utilizes little-endian instructions to access data on PCI
buses.
</p>

</body>
</section>

<section>
<title>Additional SPARC keywording requirements</title>
<body>

<note>
This section is in addition to the guidelines in
<uri link="::keywording/#Keywording on upgrades"/>. It discusses
<e>additional</e> requirements for the SPARC architecture.
</note>

<p>
For a package to have the <c>~sparc</c> keyword added, the following additional
items must generally hold:
</p>

<ul>
  <li>
    The package must have been tested by an arch team member (or someone with
    permission from the arch team) on a <c>v9</c> system.
  </li>
</ul>

<p>
It is generally expected that anyone who does keywording for SPARC should be on
the <c>sparc@</c> alias.
</p>

</body>
</section>

<section>
<title>SPARC instruction set and performance notes</title>
<body>

<p>
There are three basic SPARC instruction set standards.
</p>

<ul>
  <li>
    <c>v7</c> is the original instruction set used in very old hardware. Gentoo does
    not ship <c>v7</c> capable stages, however a sufficiently crazy person could in
    theory run Gentoo on a <c>v7</c> machine.
  </li>
  <li>
    <c>v8</c> is an extension of <c>v7</c> with added support for hardware integer
    multiplication and division. Last time Gentoo sparc32 (<c>sun4m</c>) stages
    were available was on 2006.1 release.
  </li>
  <li>
    <c>v9</c> adds in 64 bit support and a large number of performance-enhancing
    features. Gentoo sparc64 (<c>sun4u</c>) stages are <c>v9</c>.
  </li>
</ul>

<p>
In addition, individual CPU implementations have slight differences <d/> for
example, HyperSparc CPUs have relaxed requirements when it comes to scheduling
certain instructions. These are relatively minor differences.
</p>

<p>
If <c>gcc</c> is invoked without any <c>-mcpu</c> parameter, it will generate <c>v7</c>
code. Depending upon the application, this can be anywhere up to five times
slower than <c>v9</c> code when running on an UltraSparc <d/> cryptographic and
graphics applications which make heavy use of integer multiplication and
division are especially badly hit. For this reason, the comments in
<uri link="::general-concepts/user-environment/#Not filtering variables"/>
are especially important on SPARC.
</p>

</body>
</section>

<section>
<title>Contacting the SPARC team</title>
<body>

<p>
The SPARC team can be contacted:
</p>

<ul>
  <li>
    Via Bugzilla bugs assigned to <c>sparc@</c>
  </li>
  <li>
    Via email to the <c>sparc@</c> email alias
  </li>
  <li>
    Via email to the <c>gentoo-sparc</c> mailing list
  </li>
  <li>
    Via the <c>#gentoo-sparc</c> IRC channel on Libera.Chat
  </li>
</ul>

</body>
</section>
</chapter>
</guide>