From stevez@bigboy74.West.Sun.COM Wed Jun 21 15:55:31 1995
Date: Wed, 21 Jun 1995 15:51:31 -0700
From: stevez@bigboy74.West.Sun.COM (Steve Z.)
To: jek3@Eng, stevez@bigboy74.West.Sun.COM
Subject: PSARC 1994/196
Cc: psarc-members@sac.Eng.Sun.COM, billt@bigboy74.West.Sun.COM,
abe@bigboy74.West.Sun.COM
Content-Length: 2081
> As to your response, I don't believe your answer to the fdisk question
> is sufficient. This **is** a Sun/SunSoft ARC issue. The decision to
> adhear to ``standards'' like PReP is an ARC issue.
This is arguably true in theory, but not in practice, at least not in
this case. See below.
> On a more micro front, the minutes indicate that the ARC accepted the
> fdisk answer based on the ability to support multiple OS's. That has
> been lost, therefore their approval has been lost. This needs to be
> addressed.
>
> So, I'm reasking what I asked before. Could you provide a couple of
> paragraphs as to the whys and what that have happened so I can provide
> sufficient information to the ARC to get the issues resolved and this
> case approved? I'm not saying that they shouldn't say yes. Its just
> that the previous data is now invalid, and they now need new data.
Is the paragraph below sufficient?
If the firmware on the machines that we MUST support (both with current
and anticipated contracts) can't boot Solaris, then we're out of the
PowerPC business. Non-Open-Firmware systems boot the 0x41 partition
specified in the fdisk table; Open Firmware systems boot a file from a
DOS FAT filesystem specified in an fdisk table. In either case, the
disk must be fdisk-partitioned. Without an fdisk table, one won't be
able to boot on ANY PowerPC system that we have heard of.
> As far as cmdk/sd, (where I didn't expect paragraphs of explanation, but
> got them 8^) your answer is basically that we only have cmdk
> (which is unclear) and that therefore we will ship cmdk.
That was only the first of the five points I raised, without even
considering architecture per se. If the ARC requires it, either we (PS)
or someone in ON will have to bring another case proposing which
of two architectures already part of Solaris will be used on PowerPC.
By the way, Joe, I couldn't find the case for sd on SPARC or for cmdk on x86
in the PSARC directories, looking for "disk", "sd", and "cmdk" in the
"IAM*" files. Do you happen to know what the cases were?
Steve
From shannon@datsun Thu Jun 22 00:21:15 1995
Date: Thu, 22 Jun 1995 00:20:18 -0700
From: shannon@datsun (Bill Shannon)
To: jek3@Eng, stevez@bigboy74.West.Sun.COM
Subject: Re: PSARC 1994/196
Cc: abe@bigboy74.West.Sun.COM, billt@bigboy74.West.Sun.COM,
psarc-members@sac.Eng.Sun.COM
Content-Length: 669
The issue with cmdk was (as I remember it) that it introduced interfaces
that were never approved, and in some ways conflicted with approved (or
long ago grandfathered) interfaces. Overhauling the interfaces used by
disk drivers may be a good thing to do, but it has never been done
officially. It was this lack of approval for cmdk that made us hesitant
to allow it to become entrenched on another platform.
This issue was brought up long enough ago that there was plenty of time
to resolve it for PPC. I won't be very sympathetic to any arguments
about not having had time to deal with this. This issue was first
identified in the Solaris 2.1 for x86 timeframe.
From jek3@jurassic Thu Jun 22 18:01:47 1995
Date: Thu, 22 Jun 1995 18:00:32 -0700
From: jek3@jurassic (Joseph Kowalski)
To: stevez@bigboy74.West.Sun.COM
Subject: Re: PSARC 1994/196
Cc: psarc@sac
Content-Length: 1073
> From stevez@bigboy74.West.Sun.COM Wed Jun 21 15:54:23 1995
>
> If the firmware on the machines that we MUST support (both with current
> and anticipated contracts) can't boot Solaris, then we're out of the
> PowerPC business. Non-Open-Firmware systems boot the 0x41 partition
> specified in the fdisk table; Open Firmware systems boot a file from a
> DOS FAT filesystem specified in an fdisk table. In either case, the
> disk must be fdisk-partitioned. Without an fdisk table, one won't be
> able to boot on ANY PowerPC system that we have heard of.
If two operating systems both require a DOS FAT filesystem for booting
(or otherwise) could they concievably share?
I thought the PReP spec required Open-Firmware and all the Non-Open-Firmware
machines were going to end up in a landfill somewhere? Do we have a rational
option of not supporting these, or not supporting them for long?
Can Install be intelligent enough to only install the required boot partition,
thereby lowering the number consumed and perhaps restoring multiple OS support?
- thanks,
- jek3
From stevez@bigboy74.West.Sun.COM Thu Jun 22 18:43:09 1995
Date: Thu, 22 Jun 1995 18:39:04 -0700
From: stevez@bigboy74.West.Sun.COM (Steve Z.)
To: stevez@bigboy74.West.Sun.COM, jek3@jurassic.Eng.Sun.COM
Subject: Re: PSARC 1994/196
Cc: psarc@sac.Eng.Sun.COM
Content-Length: 2135
> If two operating systems both require a DOS FAT filesystem for booting
> (or otherwise) could they concievably share?
With the current (non-Open-Firmware) booting, the firmware boots from
the (one and only) 0x41 partition. I think this was stupid, but the
PReP spec appears to say that [it implies that everything in the partition
entry for "the" 0x41 partition (and that would include the "active
partition flag) is ignored]. In direct discussions with the NT implementers,
we learned that this was their interpretation as well.
> I thought the PReP spec required Open-Firmware and all the Non-Open-Firmware
> machines were going to end up in a landfill somewhere? Do we have a rational
> option of not supporting these, or not supporting them for long?
XXX XXX XXXXXXX XXXXXXXX the PReP spec:
<< quote from document omitted >>
When I asked early this year whether they were going to upgrade systems
in the field (flash rom, remember), they said that they meant systems
that had FCSed after June 1, but that they were not planning upgrades.
I'm afraid we'll be stuck with the legacy for a long time, even after systems
start shipping with Open Firmware. At least our "Virtual Open Firmware"
mechanism means that Solaris, including its bootstraps and kernel, sees the
same interfaces whether or not the platform provides Open Firmware.
> Can Install be intelligent enough to only install the required boot partition,
> thereby lowering the number consumed and perhaps restoring multiple OS support?
It's not an option with the legacy firmware. Also, other OS's
(NT at least, and I'm willing to bet AIX as well) assume that they
own the disk. When/if Open Firmware reigns on PowerPC, I think install
COULD allow multiple OS support.
Steve
From jek3@jurassic Fri Jun 23 16:01:02 1995
Date: Fri, 23 Jun 1995 15:59:19 -0700
From: jek3@jurassic (Joseph Kowalski)
To: psarc@sac
Subject: 1994/196 PowerPC Header Files
Cc: stevez@West, billt@West, abe@West, mukul@jurassic, jre@jurassic
Content-Type: X-sun-attachment
Content-Length: 61562
----------
X-Sun-Data-Type: text
X-Sun-Data-Description: text
X-Sun-Data-Name: text
X-Sun-Charset: us-ascii
X-Sun-Content-Lines: 18
And some of you thought this would never happen.
At the inception review, it was thought that this could be brought to
closure via e-mail and I could just come back with an opinion and we
could vote on that. It isn't quite so simple, but I've attached what
have been identified as outstanding issues and a 95% complete opinion.
Note that the opinion serves a specification. The materials tend to
document what changed at the level for a code review. The easiest
solution was to capture the interfaces in the opinion in greater detail
than usual.
Comments usually reserved for after the opinion is approved (spelling,
grammar, awkward sentences, missing observations....) are gladly accepted
now.
- jek3
----------
X-Sun-Data-Type: default
X-Sun-Data-Description: default
X-Sun-Data-Name: Issues
X-Sun-Charset: us-ascii
X-Sun-Content-Lines: 57
Issues:
1] Dependency on resolution of cmdk/sd? The minutes seem to call out
a dependency on resolving this issue. No ARC case has been submitted.
There is no reason to hang that dependency on this header file case
except as a convience.
Does the ARC wish to continue to place this requirement? Note that
this will result in a knashing of teeth because of schedule
implications.
[I'm writting the prototype opinion with the dependency.]
2] The use of the fdisk partitioning was approved under the auspice
of ``multiple OS support''. The Solaris (and NT) implementations
have evolved such that the fdisk partitioning remains, but the
``multiple OS support'' was lost. I'm not sure we have much
choice here, but not being an expert on the PROM, I'm not sure.
Steve's description was:
If the firmware on the machines that we MUST support (both with current
and anticipated contracts) can't boot Solaris, then we're out of the
PowerPC business. Non-Open-Firmware systems boot the 0x41 partition
specified in the fdisk table; Open Firmware systems boot a file from a
DOS FAT filesystem specified in an fdisk table. In either case, the
disk must be fdisk-partitioned. Without an fdisk table, one won't be
able to boot on ANY PowerPC system that we have heard of.
Does anyone else want to dig more into this, or is the previous
acceptance still OK?
[I can't guess what this will be, so I'm leaving the opinion blank
at the moment. I believe that the use of fdisk partitioning is
a given, but the number of partiontions consumed by Solaris and
the identification of those partitions seems open for discussion.]
3] The use of the x86 form of the VTOC was ``approved without setting
a precident'' for use on a little-endian PPC port. There is a
possibility that the port may become big-endian. Does anybody
believe that this would revoke the approval.
[Because the minutes are clear, I'm writing the opinion such that
this is only approved if the port is little endian.
---- the following aren't really issues, but changes/additions since
---- earlier reviews.
4] Note that I have changed __va_copy() to va_copy() hidden when
the appropriate standards are in effect.
5] The interfaces with the compiler __builtin*, are something I
discovered in looking into this and simply documented.
----------
X-Sun-Data-Type: default
X-Sun-Data-Description: default
X-Sun-Data-Name: opinion.ms
X-Sun-Charset: us-ascii
X-Sun-Content-Lines: 417
.\" @(#)opinion.template.ms 1.3 93/09/10
.\"
.\" This file is a troff -ms template for writing an architecture opinion. It
.\" includes a series of macros (../../amac) that provide some basic structure.
.\" Read the comments, and look for the lines bracketed by "**"'s that tell
.\" where your insertions go.
.\"
.\" We follow basically "man page" styles -- commands and function names in the
.\" text are in bold. Indented code references are in typewriter font ("L").
.\" Use ".UX" for references to "UNIX".
.\"
.\" To make a footnote, follow the sequence:
.\"
.\" blah blah blah blah.\** <- Invokes next footnote
.\" .nr MF 1 <- Sets up for hanging indent footnotes
.\" .FS <- Begins footnote
.\" .IP [\n*] <- Hanging indent of number in []'s
.\" blah blah blah <- Text of footnote
.\" .FE <- End of footnote
.\" blah blah blah <- Resume main text of document
.\"
.\" String definitions used below. Alter these as necessary for the
.\" case at hand. The first is the name of the ARC generating this opinion
.\" (all in lower case) and the second the case number (in the form 199x/nnn).
.\" ** Fill these in! **
.ds aR psarc
.ds cA 1994/196
.\"
.LP
.so ../../amac
.Co
.\"
.\" The left footer "LF" is set to be the file number. The number is formed
.\" as: arc-name/year/sequence number: e.g., psarc/1993/001. This is in
.\" italics, don't disturb the font switches. Unless you're using a
.\" nonstandard footer format, no change is necessary here.
.\"
.ds LF \fI\*(aR/\*(cA\fP
.ds RF \fICopyright 1994 Sun Microsystems, Inc.\fP
.if n .ds CF
.IP \fBSubject:\fP 15
.\"
.\" Put the name of the item being reviewed here.
.\"
PowerPC Header Files
.IP "\fBSubmitted by:\fP" 15
.\"
.\" Put the name of the person who led the submission here. Put "et al"
.\" if there's more than one.
.\"
Bill Taylor
.IP \fBFile:\fP 15
.\"
.\" The name of the file holding this text. The standard location is:
.\" "file number" "/" and "opinion.ms"; no alteration is necessary here
.\" unless you're using a different location.
.\"
\*(aR/\*(cA/opinion.ms
.IP \fBDate:\fP 15
.\"
.\" Put the date we reached the opinion being documented here. If it's
.\" being revised, include the original date and the last revision date
.\" as in: February 30th, 1991, Revised March 32nd, 1991. As a style
.\" matter, the "st", "nd", "rd", "th" suffixes to the date should be
.\" added as appropriate.
.\"
TBD
.IP "\fBCommittee:\fP" 15
.\"
.\" List the names of the committee who participated in the decision here.
.\" List the majority first, in alphabetical order. Except, place the name
.\" of the person writing the majority opinion first. List the minority
.\" second, after a "." and the word "Minority:". Again, place the name
.\" of the author of the minority opinion first, but then alphabetical.
.\" E.g.: Joe Blow, Allan Able, Charlie Carlson. Minority: George Wrong,
.\" Devils Advocate. List abstentions last.
.\"
TBD
.pn 2
.NH
Summary
.LP
.\"
.\" In this section, put a few sentence synopsis of the proposal.
.\"
This proposal establishes the modifications to be made to common,
Instruction Set Independent header files to support PowerPC.
.NH
Decision & Precedence Information
.LP
.\"
.\" In this section, state the following in this order. One sentence
.\" paragraphs are best.
.\"
.\" Whether or not the proposal is accepted. [If there are mandatory
.\" modifications that the acceptance is conditional upon, state that
.\" they are specified in Appendix A. If the proposal is accepted
.\" unconditionally, simply state that it's accepted.]
.\"
.\" The classification of the deliverable as a major [incompatible],
.\" minor [compatible enhancement], or micro [a "replicant" like a
.\" port or driver; or a bug fix.]
.\"
.\" The list of projects that must be delivered prior to this project.
.\" List this as:
.\"
.\" .RS
.\" .IP n <- "n" is database or file number of project
.\" Text of description
.\" .IP n <- more of these as required
.\" ...
.\" .RE
.\"
The proposal is accepted.
.LP
The classification is minor.
.LP
A true port to a new Instruction Set Architecture would be expected to
produce a micro change to the system.
In this case, the project team decided to enhance the system in order
to produce a superior port.
It would have been possible to define this project such as to qualify
for a micro classification.
.LP
This project is subset of the larger ``Solaris for PowerPC''
project, which was broken into subprojects to aid the review process.
All of the subprojects must be delivered simultaneously.
.RS
.IP PSARC/1993/685
PowerPC ABI
.IP PSARC/1994/188
Solaris Kernel for PowerPC
.IP PSARC/1994/197
PowerPC Commands
.IP PSARC/1994/198
PowerPC System Libraries
.IP PSARC/1994/302
PowerPC Booting
.RE
.LP
In addition, it is required that the unreviewed cmdk disk driver be approved
before the ``Solaris for PowerPC'' project can be delivered. It is a
convenience to associate this dependency with this specific subproject.
.NH
Opinion
.LP
.\"
.\" Place the text of any opinion here. Note that if the decision is
.\" to reject that an opinion text is mandatory. The decision should,
.\" where possible and especially for a rejection, express the principles
.\" that underly the decision. If the application of the principle is
.\" limited or "special" for this case, be sure to identify that.
.\"
.\" This section should also identify the project's interfaces and
.\" their classifications in the interface taxonomy. A tabular format
.\" is frequently appropriate for this information. Tables should be
.\" formatted similarly to the following:
.\"
.\" .LP
.\" .TS H
.\" box;
.\" c s s
.\" l | l | l.
.\" Interfaces Exported
.\" _
.\" Interface Classification Comments
.\" _
.\" .TH
.\"
.\" .TE
.\"
Although this case started out as complex and interesting, it was determined
that most of the interesting bits were better attributed to other cases.
The controversial issues associated with the implementation of varargs(5)
were assigned to PSARC/1993/685, "PowerPC ABI" although the implementation
is visible in the headers. A similar decision was made with respect to the
value of _NFILES.
.NH 2
Global Flags
.LP
PSARC/1993/444, ``Add isa_defs.h'', approves a policy of ``say what you mean''
for conditional compilation. If the code is dependent on the endianness
of the platform, the conditional should be based on that, not on a string
of supported Instruction Set Architectures. That case is incomplete because
it doesn't specify a commitment level. This case clarifies PSARC/1993/444
to specifies a commitment level of Public for both the name
and feature test macros defined within. See reference 2 for more details.
.LP
The port of Solaris to PowerPC has uncovered additional feature test macros
which should be defined in . The additional macros and
definitions which reflect processor characteristics are are:
.RS
.IP _CHAR_ALIGNMENT
.IP _SHORT_ALIGNMENT
.IP _INT_ALIGNMENT
.IP _LONG_ALIGNMENT
.IP _LONG_LONG_ALIGNMENT
.IP _DOUBLE_ALIGNMENT
.IP _LONG_DOUBLE_ALIGNMENT
.IP _POINTER_ALIGNMENT:
The ABI defines alignment requirements of each of the primitive
object types. Some, if not all, may be hardware requirements as
well. The values are expressed in "byte-alignment" units.
.IP _MAX_ALIGNMENT:
The most stringent alignment requirement as specified by the ABI.
Equal to the maximum of all the above _XXX_ALIGNMENT values.
.IP _ALIGNMENT_REQ / _ALIGNMENT_OPT
How absolute are the alignment requirements.
.RS
.IP _ALIGNMENT_REQ:
This flag indicates that the hardware requires the ABI alignment.
.IP _ALIGNMENT_OPT:
This flag indicates that the hardware does not require
the ABI alignment. Performance penalty is not considered.
.RE
.IP _FIRMWARE_NEEDS_FDISK / _NO_FDISK_PRESENT
This indicates the presence/absence of an fdisk table.
.RS
.IP _FIRMWARE_NEEDS_FDISK
The fdisk table is required by system firmware.
If present, it allows a disk to be subdivided into multiple fdisk
partitions, each of which is equivalent to a separate, virtual disk.
This enables the co-existence of multiple operating systems on a
shared hard disk.
.IP _NO_FDISK_PRESENT
If the fdisk table is absent, it is assumed that the entire
media is allocated for a single operating system.
.RE
.RE
.NH 2
Variable Arguments
.LP
The PowerPC ABI specifies the argument passing conventions and the majority
of the interface changes required to support variable arguments are
discussed and approved in that case. Those discussions were extensive
and contentious. A pair of related interfaces were not discussed in
that case, nor should they have been. They are approved by this case.
See references 1 and 4 for more details.
.NH 3
va_copy()
.LP
For most current processors and argument passing conventions, a simple
pointer to memory is used as the underlying type of a va_list.
PowerPC uses and array of size one of a structure to implement a va_list.
This cause difficulties with applications which wish to ``save their place''
in an argument list. Currently, this is done in the non-portable way
of simply assigning one instance of a va_list to another which assumes
that a va_list is a simple type, such as a pointer. This project
proposes that a macro be defined to provide a portable method of
``saving your place'' across Solaris implementations. This does not
address the problem of source portable across other operating systems.
.LP
The macro va_copy has the following definition:
.IP "va_copy(va_list dest, va_list src)"
The va_copy() macro saves the state represented by the va_list src in
the va_list dest. The va_list passed as dest should not be initialized
by a previous call to va_start() and must be passed to va_end() before
being reused as a parameter to va_start() or as the dest parameter of
a subsequent call to va_copy. The behavior is undefined should any of
the restrictions above not be met.
.LP
This macro will be implemented in , and .
(The multiple files are historic and not altered by this case.)
Note that ANSI-C x3.159-1989 restricts the namespace in the first two of
these files, so this macro will not be visible when ANSI-C, POSIX, or
X/Open conformant compilations are specified.
.NH 3
__builtin_va_info
.LP
PSARC/1993/138, ``Compiler Predefines'', defines Public interfaces between
the ON headers and compilation systems to allow special compiler processing
for a well defined set of symbols. These symbols are __builtin_alloca,
__builtin_va_alist, and __builtin_va_arg_incr and are enabled by the
feature test macro __BUILTIN_VA_ARG_INCR.
See reference 3 for more details.
.LP
Using the same feature test macro, __BUILTIN_VA_ARG_INCR, PowerPC does not
use or define _builtin_va_alist or __builtin_va_arg_incr and additionally
defines __builtin_va_info. The compilation system is able to generate
code to initialize the va_list structure when recognizing this symbol.
.LP
Note that this case and definition alters/expands PSARC/1993/138.
The formerly ISA independent specification is not ISA dependent where
the original case defines the set of keywords for SPARC and x86 and
this case alters that set for PowerPC.
.NH 3
Disk Layout Issues
.LP
Although not directly related to header files, the issues of disk layout
(``fdisk'' partitions, VTOC format) were raised during the discussion of
this case and are addressed by this case.
.LP
--- fdisk discussion to be added ---
.LP
Currently, there are significant differences between the SPARC and x86
VTOC (Volume Table of Contents). One significant difference is that
the SPARC VTOC only supports 8 slices while the x86 version supports
16. This disparity was justified by the assertion that x86 boot and
alternate sector support requires additional partitions (leaving fewer
for the user). In the case of alternate sectors, this turned out to
be an implementation choice, rather than a requirement. However, there
have been user requests for supporting a larger number of slices.
.LP
The ARC expressed the desire for an architecture for VTOCs. There
was some disagreement if this meant clear definitions of big-endian
and little-endian versions or if a more elaborate, XDR VTOC was the
correct solution. The ARC did not believe that resolving this issue
was the responsibility of the PPC Project Team and allowed the use
of the current x86 form of the VTOC on a little-endian port of Solaris
to PowerPC. This does not set a precedent for future ports.
.NH 2
Interface Table
.LP
.TS H
box;
c s s
l | l | l.
Interfaces Exported
_
Interface Classification Comments
_
.TH
Public
_CHAR_ALIGNMENT Public Feature test macro (see PSARC/1993/444)
_SHORT_ALIGNMENT Public Feature test macro (see PSARC/1993/444)
_INT_ALIGNMENT Public Feature test macro (see PSARC/1993/444)
_LONG_ALIGNMENT Public Feature test macro (see PSARC/1993/444)
_LONG_LONG_ALIGNMENT Public Feature test macro (see PSARC/1993/444)
_DOUBLE_ALIGNMENT Public Feature test macro (see PSARC/1993/444)
_LONG_DOUBLE_ALIGNMENT Public Feature test macro (see PSARC/1993/444)
_POINTER_ALIGNMENT Public Feature test macro (see PSARC/1993/444)
_MAX_ALIGNMENT Public Feature test macro (see PSARC/1993/444)
_ALIGNMENT_REQ Public Feature test macro (see PSARC/1993/444)
_ALIGNMENT_OPT Public Feature test macro (see PSARC/1993/444)
_FIRMWARE_NEEDS_FDISK Public Feature test macro (see PSARC/1993/444)
_NO_FDISK_PRESENT Public Feature test macro (see PSARC/1993/444)
va_copy() Public Additional varargs macro
__builtin_va_info() Public See PSARC/1992/138
Uncommitted File name
Solaris FDISK ID (130) Public Identifies Solaris PPC partition
.TE
.NH
Minority Opinion(s)
.LP
.\"
.\" If there is a dissent, the text for the dissent goes here.
.\" If none, so state.
.\"
** Dissenting opinion. **
.NH
Advisory Information
.LP
.\"
.\" If there is editorial, or advisory information the committee wishes
.\" to express, place that here. This is information that may be used
.\" by the project or management as they see fit. It could include
.\" observations about costs, techniques, suggestions for different
.\" design decisions, and the like.
.\"
--- something about cmdk/sd? ---
.LP
A project to regularize the VTOC should be created.
There is some disagreement if this means clear definitions of big-endian
and little-endian versions or if a more elaborate, XDR VTOC is the
correct solution. Backwards compatibility must be maintained.
.NH
Appendices
.NH 2
Appendix A: Technical Changes Required
.LP
.\"
.\" If there are mandatory technical changes, enumerate them here.
.\" The formatting that works best is:
.\"
.\" .RS
.\" .IP 1.
.\" Text.
.\" .IP 2.
.\" Text.
.\" ...
.\" .RE
.\"
.\" If there are no mandatory changes, so state.
.\"
.RS
.IP 1.
Do not reserve the sys_sysppc system call. Allow the first project which
asserts a need for it to define it.
.RE
.NH 2
Appendix B: Technical Changes Advised
.LP
.\"
.\" As in Appendix A, list specific changes that the committee advises.
.\" If none, so state.
.\"
.None.
.NH 2
Appendix C: Reference Material
.LP
.\"
.\" List reference material. This usually will include the submission
.\" material. Use the enumeration formatting described for Appendix A.
.\"
.IP 1.
psarc/1993/685, PowerPC ABI, Steve Z.
.IP 2.
System V Application Binary Interface, PowePC Processor Supplement (Draft),
Steve Z.; SunSoft, K. K.; IBM, March 1995
.IP 3.
psarc/1993/444, Add isa_defs.h, Joseph Kowalski
.IP 4.
psarc/1993/138, Compiler Predefines, Lee Bieber
.IP 5.
psarc/1994/168/materials/issue4.varargs (This case)
.IP 6.
psarc/1993/015, x86 Disk Layout, Kevin S.
----------
X-Sun-Data-Type: default
X-Sun-Data-Description: default
X-Sun-Data-Name: opinion.txt
X-Sun-Charset: us-ascii
X-Sun-Content-Lines: 330
sun
microsystems Systems Architecture Committee
_________________________________________________________________
Subject: PowerPC Header Files
Submitted by: Bill Taylor
File: psarc/1994/196/opinion.ms
Date: TBD
Committee: TBD
1. Summary
This proposal establishes the modifications to be made to
common, Instruction Set Independent header files to support
PowerPC.
2. Decision & Precedence Information
The proposal is accepted.
The classification is minor.
A true port to a new Instruction Set Architecture would be
expected to produce a micro change to the system. In this
case, the project team decided to enhance the system in
order to produce a superior port. It would have been possi-
ble to define this project such as to qualify for a micro
classification.
This project is subset of the larger ``Solaris for PowerPC''
project, which was broken into subprojects to aid the review
process. All of the subprojects must be delivered simul-
taneously.
PSARC/1993/685
PowerPC ABI
PSARC/1994/188
Solaris Kernel for PowerPC
PSARC/1994/197
PowerPC Commands
PSARC/1994/198
PowerPC System Libraries
PSARC/1994/302
PowerPC Booting
psarc/1994/196 Copyright 1995 Sun Microsystems, Inc.
- 2 -
In addition, it is required that the unreviewed cmdk disk
driver be approved before the ``Solaris for PowerPC'' pro-
ject can be delivered. It is a convenience to associate
this dependency with this specific subproject.
3. Opinion
Although this case started out as complex and interesting,
it was determined that most of the interesting bits were
better attributed to other cases. The controversial issues
associated with the implementation of varargs(5) were
assigned to PSARC/1993/685, "PowerPC ABI" although the
implementation is visible in the headers. A similar deci-
sion was made with respect to the value of _NFILES.
3.1. Global Flags
PSARC/1993/444, ``Add isa_defs.h'', approves a policy of
``say what you mean'' for conditional compilation. If the
code is dependent on the endianness of the platform, the
conditional should be based on that, not on a string of sup-
ported Instruction Set Architectures. That case is incom-
plete because it doesn't specify a commitment level. This
case clarifies PSARC/1993/444 to specifies a commitment
level of Public for both the name and
feature test macros defined within. See reference 2 for
more details.
The port of Solaris to PowerPC has uncovered additional
feature test macros which should be defined in
. The additional macros and definitions
which reflect processor characteristics are are:
_CHAR_ALIGNMENT
_SHORT_ALIGNMENT
_INT_ALIGNMENT
_LONG_ALIGNMENT
_LONG_LONG_ALIGNMENT
_DOUBLE_ALIGNMENT
_LONG_DOUBLE_ALIGNMENT
_POINTER_ALIGNMENT:
The ABI defines alignment requirements of each of
the primitive object types. Some, if not all, may
be hardware requirements as well. The values are
expressed in "byte-alignment" units.
_MAX_ALIGNMENT:
psarc/1994/196 Copyright 1995 Sun Microsystems, Inc.
- 3 -
The most stringent alignment requirement as speci-
fied by the ABI. Equal to the maximum of all the
above _XXX_ALIGNMENT values.
_ALIGNMENT_REQ
How absolute are the alignment requirements.
_ALIGNMENT_REQ:
This flag indicates that the hardware
requires the ABI alignment.
_ALIGNMENT_OPT:
This flag indicates that the hardware does
not require the ABI alignment. Performance
penalty is not considered.
_FIRMWARE_NEEDS_FDISK
This indicates the presence/absence of an fdisk
table.
_FIRMWARE_NEEDS_FDISK
The fdisk table is required by system
firmware. If present, it allows a disk to be
subdivided into multiple fdisk partitions,
each of which is equivalent to a separate,
virtual disk. This enables the co-existence
of multiple operating systems on a shared
hard disk.
_NO_FDISK_PRESENT
If the fdisk table is absent, it is assumed
that the entire media is allocated for a sin-
gle operating system.
3.2. Variable Arguments
The PowerPC ABI specifies the argument passing conventions
and the majority of the interface changes required to sup-
port variable arguments are discussed and approved in that
case. Those discussions were extensive and contentious. A
pair of related interfaces were not discussed in that case,
nor should they have been. They are approved by this case.
See references 1 and 4 for more details.
3.2.1. va_copy()
For most current processors and argument passing conven-
tions, a simple pointer to memory is used as the underlying
type of a va_list. PowerPC uses and array of size one of a
structure to implement a va_list. This cause difficulties
with applications which wish to ``save their place'' in an
argument list. Currently, this is done in the non-portable
way of simply assigning one instance of a va_list to another
which assumes that a va_list is a simple type, such as a
psarc/1994/196 Copyright 1995 Sun Microsystems, Inc.
- 4 -
pointer. This project proposes that a macro be defined to
provide a portable method of ``saving your place'' across
Solaris implementations. This does not address the problem
of source portable across other operating systems.
The macro va_copy has the following definition:
va_copy(va_list dest, va_list src)
The va_copy() macro saves the state represented by the
va_list src in the va_list dest. The va_list passed as
dest should not be initialized by a previous call to
va_start() and must be passed to va_end() before being
reused as a parameter to va_start() or as the dest
parameter of a subsequent call to va_copy. The
behavior is undefined should any of the restrictions
above not be met.
This macro will be implemented in ,
and . (The multiple files are historic and
not altered by this case.) Note that ANSI-C x3.159-1989
restricts the namespace in the first two of these files, so
this macro will not be visible when ANSI-C, POSIX, or X/Open
conformant compilations are specified.
3.2.2. __builtin_va_info
PSARC/1993/138, ``Compiler Predefines'', defines Public
interfaces between the ON headers and compilation systems to
allow special compiler processing for a well defined set of
symbols. These symbols are __builtin_alloca,
__builtin_va_alist, and __builtin_va_arg_incr and are
enabled by the feature test macro __BUILTIN_VA_ARG_INCR.
See reference 3 for more details.
Using the same feature test macro, __BUILTIN_VA_ARG_INCR,
PowerPC does not use or define _builtin_va_alist or
__builtin_va_arg_incr and additionally defines
__builtin_va_info. The compilation system is able to gen-
erate code to initialize the va_list structure when recog-
nizing this symbol.
Note that this case and definition alters/expands
PSARC/1993/138. The formerly ISA independent specification
is not ISA dependent where the original case defines the set
of keywords for SPARC and x86 and this case alters that set
for PowerPC.
3.2.3. Disk Layout Issues
Although not directly related to header files, the issues of
disk layout (``fdisk'' partitions, VTOC format) were raised
during the discussion of this case and are addressed by this
case.
psarc/1994/196 Copyright 1995 Sun Microsystems, Inc.
- 5 -
--- fdisk discussion to be added ---
Currently, there are significant differences between the
SPARC and x86 VTOC (Volume Table of Contents). One signifi-
cant difference is that the SPARC VTOC only supports 8
slices while the x86 version supports 16. This disparity
was justified by the assertion that x86 boot and alternate
sector support requires additional partitions (leaving fewer
for the user). In the case of alternate sectors, this
turned out to be an implementation choice, rather than a
requirement. However, there have been user requests for
supporting a larger number of slices.
The ARC expressed the desire for an architecture for VTOCs.
There was some disagreement if this meant clear definitions
of big-endian and little-endian versions or if a more ela-
borate, XDR VTOC was the correct solution. The ARC did not
believe that resolving this issue was the responsibility of
the PPC Project Team and allowed the use of the current x86
form of the VTOC on a little-endian port of Solaris to
PowerPC. This does not set a precedent for future ports.
3.3. Interface Table
___________________________________________________________________________________
| Interfaces Exported |
|______________________|________________|_________________________________________|
|Interface | Classification| Comments |
|______________________|________________|_________________________________________|
| | Public | |
|_CHAR_ALIGNMENT | Public | Feature test macro (see PSARC/1993/444)|
|_SHORT_ALIGNMENT | Public | Feature test macro (see PSARC/1993/444)|
|_INT_ALIGNMENT | Public | Feature test macro (see PSARC/1993/444)|
|_LONG_ALIGNMENT | Public | Feature test macro (see PSARC/1993/444)|
|_LONG_LONG_ALIGNMENT | Public | Feature test macro (see PSARC/1993/444)|
|_DOUBLE_ALIGNMENT | Public | Feature test macro (see PSARC/1993/444)|
|_LONG_DOUBLE_ALIGNMENT| Public | Feature test macro (see PSARC/1993/444)|
|_POINTER_ALIGNMENT | Public | Feature test macro (see PSARC/1993/444)|
|_MAX_ALIGNMENT | Public | Feature test macro (see PSARC/1993/444)|
|_ALIGNMENT_REQ | Public | Feature test macro (see PSARC/1993/444)|
|_ALIGNMENT_OPT | Public | Feature test macro (see PSARC/1993/444)|
|_FIRMWARE_NEEDS_FDISK | Public | Feature test macro (see PSARC/1993/444)|
|_NO_FDISK_PRESENT | Public | Feature test macro (see PSARC/1993/444)|
|va_copy() | Public | Additional varargs macro |
|__builtin_va_info() | Public | See PSARC/1992/138 |
| | Uncommitted | File name |
|Solaris FDISK ID (130)| Public | Identifies Solaris PPC partition |
|______________________|________________|_________________________________________|
4. Minority Opinion(s)
** Dissenting opinion. **
psarc/1994/196 Copyright 1995 Sun Microsystems, Inc.
- 6 -
5. Advisory Information
--- something about cmdk/sd? ---
A project to regularize the VTOC should be created. There
is some disagreement if this means clear definitions of
big-endian and little-endian versions or if a more ela-
borate, XDR VTOC is the correct solution. Backwards compa-
tibility must be maintained.
6. Appendices
6.1. Appendix A: Technical Changes Required
1. Do not reserve the sys_sysppc system call. Allow
the first project which asserts a need for it to
define it.
6.2. Appendix B: Technical Changes Advised
6.3. Appendix C: Reference Material
1. psarc/1993/685, PowerPC ABI, Steve Z.
2. System V Application Binary Interface, PowePC Processor
Supplement (Draft), Steve Z.; SunSoft, K. K.;
IBM, March 1995
3. psarc/1993/444, Add isa_defs.h, Joseph Kowalski
4. psarc/1993/138, Compiler Predefines, Lee Bieber
5. psarc/1994/168/materials/issue4.varargs (This case)
6. psarc/1993/015, x86 Disk Layout, Kevin S.
psarc/1994/196 Copyright 1995 Sun Microsystems, Inc.
----------
X-Sun-Data-Type: postscript-file
X-Sun-Data-Description: postscript-file
X-Sun-Data-Name: opinion.ps
X-Sun-Charset: us-ascii
X-Sun-Content-Lines: 1147
%!PS
%%Version: 3.15
%%DocumentFonts: (atend)
%%Pages: (atend)
%%EndComments
%ident "@(#)lp:filter/postscript/postscript/dpost.ps 1.1"
%
% Version 3.16 prologue for troff files.
%
/#copies 1 store
/aspectratio 1 def
/formsperpage 1 def
/landscape false def
/linewidth .3 def
/magnification 1 def
/margin 0 def
/orientation 0 def
/resolution 720 def
/xoffset 0 def
/yoffset 0 def
/roundpage true def
/useclippath true def
/pagebbox [0 0 612 792] def
/R /Times-Roman def
/I /Times-Italic def
/B /Times-Bold def
/BI /Times-BoldItalic def
/H /Helvetica def
/HI /Helvetica-Oblique def
/HB /Helvetica-Bold def
/HX /Helvetica-BoldOblique def
/CW /Courier def
/CO /Courier def
/CI /Courier-Oblique def
/CB /Courier-Bold def
/CX /Courier-BoldOblique def
/PA /Palatino-Roman def
/PI /Palatino-Italic def
/PB /Palatino-Bold def
/PX /Palatino-BoldItalic def
/Hr /Helvetica-Narrow def
/Hi /Helvetica-Narrow-Oblique def
/Hb /Helvetica-Narrow-Bold def
/Hx /Helvetica-Narrow-BoldOblique def
/KR /Bookman-Light def
/KI /Bookman-LightItalic def
/KB /Bookman-Demi def
/KX /Bookman-DemiItalic def
/AR /AvantGarde-Book def
/AI /AvantGarde-BookOblique def
/AB /AvantGarde-Demi def
/AX /AvantGarde-DemiOblique def
/NR /NewCenturySchlbk-Roman def
/NI /NewCenturySchlbk-Italic def
/NB /NewCenturySchlbk-Bold def
/NX /NewCenturySchlbk-BoldItalic def
/ZD /ZapfDingbats def
/ZI /ZapfChancery-MediumItalic def
/VR /Varitimes#Roman def
/VI /Varitimes#Italic def
/VB /Varitimes#Bold def
/VX /Varitimes#BoldItalic def
/S /S def
/S1 /S1 def
/GR /Symbol def
/inch {72 mul} bind def
/min {2 copy gt {exch} if pop} bind def
/setup {
counttomark 2 idiv {def} repeat pop
landscape {/orientation 90 orientation add def} if
/scaling 72 resolution div def
linewidth setlinewidth
1 setlinecap
pagedimensions
xcenter ycenter translate
orientation neg rotate
width 2 div neg height 2 div translate
xoffset inch yoffset inch translate
margin 2 div dup neg translate
magnification dup aspectratio mul scale
scaling scaling scale
/Symbol /S Sdefs cf
/Times-Roman /S1 S1defs cf
0 0 moveto
} def
/pagedimensions {
useclippath userdict /gotpagebbox known not and {
/pagebbox [clippath pathbbox newpath] def
roundpage currentdict /roundpagebbox known and {roundpagebbox} if
} if
pagebbox aload pop
4 -1 roll exch 4 1 roll 4 copy
landscape {4 2 roll} if
sub /width exch def
sub /height exch def
add 2 div /xcenter exch def
add 2 div /ycenter exch def
userdict /gotpagebbox true put
} def
/pagesetup {
/page exch def
currentdict /pagedict known currentdict page known and {
page load pagedict exch get cvx exec
} if
} def
/decodingdefs [
{counttomark 2 idiv {y moveto show} repeat}
{neg /y exch def counttomark 2 idiv {y moveto show} repeat}
{neg moveto {2 index stringwidth pop sub exch div 0 32 4 -1 roll widthshow} repeat}
{neg moveto {spacewidth sub 0.0 32 4 -1 roll widthshow} repeat}
{counttomark 2 idiv {y moveto show} repeat}
{neg setfunnytext}
] def
/setdecoding {/t decodingdefs 3 -1 roll get bind def} bind def
/w {neg moveto show} bind def
/m {neg dup /y exch def moveto} bind def
/done {/lastpage where {pop lastpage} if} def
/f {
dup /font exch def findfont exch
dup /ptsize exch def scaling div dup /size exch def scalefont setfont
linewidth ptsize mul scaling 10 mul div setlinewidth
/spacewidth ( ) stringwidth pop def
} bind def
/changefont {
/fontheight exch def
/fontslant exch def
currentfont [
1 0
fontheight ptsize div fontslant sin mul fontslant cos div
fontheight ptsize div
0 0
] makefont setfont
} bind def
/sf {f} bind def
/cf {
dup length 2 idiv
/entries exch def
/chtab exch def
/newfont exch def
findfont dup length 1 add dict
/newdict exch def
{1 index /FID ne {newdict 3 1 roll put} {pop pop} ifelse} forall
newdict /Metrics entries dict put
newdict /Metrics get
begin
chtab aload pop
1 1 entries {pop def} for
newfont newdict definefont pop
end
} bind def
%
% A few arrays used to adjust reference points and character widths in some
% of the printer resident fonts. If square roots are too high try changing
% the lines describing /radical and /radicalex to,
%
% /radical [0 -75 550 0]
% /radicalex [-50 -75 500 0]
%
/Sdefs [
/bracketlefttp [220 500]
/bracketleftbt [220 500]
/bracketrighttp [-70 380]
/bracketrightbt [-70 380]
/braceleftbt [220 490]
/bracketrightex [220 -125 500 0]
/radical [0 0 550 0]
% NeWSprint's \(br is too low, compensate
statusdict /product get (NeWS Server) eq {
/radicalex [-50 100 500 0]
/parenleftex [-20 100 0 0]
} {
/radicalex [-50 0 500 0]
/parenleftex [-20 -170 0 0]
} ifelse
/integral [100 -50 500 0]
/infinity [10 -75 730 0]
] def
/S1defs [
/underscore [0 80 500 0]
/endash [7 90 650 0]
] def
%%EndProlog
%%BeginSetup
mark
/resolution 720 def
setup
2 setdecoding
%%EndSetup
%%Page: 1 1
save
mark
1 pagesetup
36 B f
(sun)753 840 w
9 H f
(microsystems)933 920 w
14 R f
(Systems Architecture Committee)2 1881 1 3113 920 t
10 S1 f
(_ _____________________________________________________________________________________________)1 4680 1 720 1000 t
(_ _____________________________________________________________________________________________)1 4680 1 720 1010 t
10 B f
(Subject:)720 1476 w
10 R f
(PowerPC Header Files)2 926 1 1470 1476 t
10 B f
(Submitted by:)1 617 1 720 1632 t
10 R f
(Bill Taylor)1 450 1 1470 1632 t
10 B f
(File:)720 1788 w
10 R f
(psarc/1994/196/opinion.ms)1470 1788 w
10 B f
(Date:)720 1944 w
10 R f
(TBD)1470 1944 w
10 B f
(Committee:)720 2100 w
10 R f
(TBD)1470 2100 w
10 B f
(1. Summary)1 563 1 720 2340 t
10 R f
( common, Instruction Set Independent header)5 1904(This proposal establishes the modi\256cations to be made to)8 2416 2 720 2496 t
(\256les to support PowerPC.)3 1047 1 720 2616 t
10 B f
( & Precedence Information)3 1185(2. Decision)1 502 2 720 2856 t
10 R f
(The proposal is accepted.)3 1038 1 720 3012 t
(The classi\256cation is minor.)3 1107 1 720 3168 t
( be expected to produce a micro change to the)9 1975(A true port to a new Instruction Set Architecture would)9 2345 2 720 3324 t
( a superior port.)3 656( this case, the project team decided to enhance the system in order to produce)14 3211(system. In)1 453 3 720 3444 t
(It would have been possible to de\256ne this project such as to qualify for a micro classi\256cation.)16 3854 1 720 3564 t
( the larger ``Solaris for PowerPC'' project, which was broken into subprojects to)12 3333(This project is subset of)4 987 2 720 3720 t
( of the subprojects must be delivered simultaneously.)7 2182( All)1 194(aid the review process.)3 938 3 720 3840 t
(PSARC/1993/685)970 3996 w
(PowerPC ABI)1 583 1 1220 4116 t
(PSARC/1994/188)970 4272 w
(Solaris Kernel for PowerPC)3 1142 1 1220 4392 t
(PSARC/1994/197)970 4548 w
(PowerPC Commands)1 867 1 1220 4668 t
(PSARC/1994/198)970 4824 w
(PowerPC System Libraries)2 1099 1 1220 4944 t
(PSARC/1994/302)970 5100 w
(PowerPC Booting)1 734 1 1220 5220 t
( that the unreviewed cmdk disk driver be approved before the ``Solaris for)12 3241(In addition, it is required)4 1079 2 720 5376 t
( dependency with this speci\256c)4 1256( is a convenience to associate this)6 1426( It)1 133(PowerPC'' project can be delivered.)4 1505 4 720 5496 t
(subproject.)720 5616 w
10 B f
(3. Opinion)1 493 1 720 5856 t
10 R f
( determined that most of the interesting)6 1643(Although this case started out as complex and interesting, it was)10 2677 2 720 6012 t
( associated with the implementation of)5 1591( controversial issues)2 830( The)1 223(bits were better attributed to other cases.)6 1676 4 720 6132 t
(varargs\(5\) were assigned to PSARC/1993/685,)4 1905 1 720 6252 t
10 S1 f
(")2658 6252 w
10 R f
(PowerPC ABI)1 584 1 2699 6252 t
10 S1 f
(")3283 6252 w
10 R f
(although the implementation is visible in)5 1682 1 3358 6252 t
( similar decision was made with respect to the value of)10 2271( A)1 138(the headers.)1 484 3 720 6372 t
10 S f
(_)3646 6372 w
10 R f
(NFILES.)3696 6372 w
10 B f
( Flags)1 261(3.1. Global)1 506 2 720 6612 t
10 R f
(PSARC/1993/444, ``Add isa)2 1164 1 720 6768 t
10 S f
(_)1884 6768 w
10 R f
(defs.h'', approves a policy of ``say what you mean'' for conditional compi-)11 3106 1 1934 6768 t
( endianness of the platform, the conditional should be based on)10 2672( the code is dependent on the)6 1255(lation. If)1 393 3 720 6888 t
( case is incomplete because it)5 1313( That)1 268( of supported Instruction Set Architectures.)5 1860(that, not on a string)4 879 4 720 7008 t
( commitment)1 553( case clari\256es PSARC/1993/444 to speci\256es a)6 1965( This)1 259(doesn't specify a commitment level.)4 1543 4 720 7128 t
(level of Public for both the name)6 1369 1 720 7248 t
10 S1 f
(<)2123 7248 w
10 R f
(sys/isa)2179 7248 w
10 S f
(_)2446 7248 w
10 R f
(defs.h)2496 7248 w
10 S1 f
(>)2737 7248 w
10 R f
( reference)1 404( See)1 212(and feature test macros de\256ned within.)5 1597 3 2827 7248 t
10 I f
( Proprietary Information)2 1016(psarc/1994/196 Sun)1 3304 2 720 7680 t
cleartomark
showpage
restore
%%EndPage: 1 1
%%Page: 2 2
save
mark
2 pagesetup
10 R f
(- 2 -)2 182 1 2789 480 t
(2 for more details.)3 756 1 720 840 t
( of Solaris to PowerPC has uncovered additional feature test macros which should be de\256ned in)15 3970(The port)1 350 2 720 996 t
10 S1 f
(<)720 1116 w
10 R f
(sys/isa)776 1116 w
10 S f
(_)1043 1116 w
10 R f
(defs.h)1093 1116 w
10 S1 f
(>)1334 1116 w
10 R f
( additional macros and de\256nitions which re\257ect processor characteristics are are:)10 3300(. The)1 246 2 1390 1116 t
10 S f
(_)970 1272 w
10 R f
(CHAR)1020 1272 w
10 S f
(_)1298 1272 w
10 R f
(ALIGNMENT)1348 1272 w
10 S f
(_)970 1428 w
10 R f
(SHORT)1020 1428 w
10 S f
(_)1348 1428 w
10 R f
(ALIGNMENT)1398 1428 w
10 S f
(_)970 1584 w
10 R f
(INT)1020 1584 w
10 S f
(_)1186 1584 w
10 R f
(ALIGNMENT)1236 1584 w
10 S f
(_)970 1740 w
10 R f
(LONG)1020 1740 w
10 S f
(_)1297 1740 w
10 R f
(ALIGNMENT)1347 1740 w
10 S f
(_)970 1896 w
10 R f
(LONG)1020 1896 w
10 S f
(_)1297 1896 w
10 R f
(LONG)1347 1896 w
10 S f
(_)1624 1896 w
10 R f
(ALIGNMENT)1674 1896 w
10 S f
(_)970 2052 w
10 R f
(DOUBLE)1020 2052 w
10 S f
(_)1425 2052 w
10 R f
(ALIGNMENT)1475 2052 w
10 S f
(_)970 2208 w
10 R f
(LONG)1020 2208 w
10 S f
(_)1297 2208 w
10 R f
(DOUBLE)1347 2208 w
10 S f
(_)1752 2208 w
10 R f
(ALIGNMENT)1802 2208 w
10 S f
(_)970 2364 w
10 R f
(POINTER)1020 2364 w
10 S f
(_)1442 2364 w
10 R f
(ALIGNMENT:)1492 2364 w
( if not)2 261( Some,)1 322( the primitive object types.)4 1113(The ABI de\256nes alignment requirements of each of)7 2124 4 1220 2484 t
( are expressed in)3 724( values)1 300( The)1 233(all, may be hardware requirements as well.)6 1832 4 1220 2604 t
10 S1 f
(")4353 2604 w
10 R f
(byte-alignment)4394 2604 w
10 S1 f
(")4999 2604 w
10 R f
(units.)1220 2724 w
10 S f
(_)970 2880 w
10 R f
(MAX)1020 2880 w
10 S f
(_)1253 2880 w
10 R f
(ALIGNMENT:)1303 2880 w
( the maximum)2 608( to)1 117( Equal)1 305(The most stringent alignment requirement as speci\256ed by the ABI.)9 2790 4 1220 3000 t
(of all the above)3 642 1 1220 3120 t
10 S f
(_)1895 3120 w
10 R f
(XXX)1945 3120 w
10 S f
(_)2161 3120 w
10 R f
(ALIGNMENT values.)1 906 1 2211 3120 t
10 S f
(_)970 3276 w
10 R f
(ALIGNMENT)1020 3276 w
10 S f
(_)1613 3276 w
10 R f
(REQ)1663 3276 w
(How absolute are the alignment requirements.)5 1881 1 1220 3396 t
10 S f
(_)1220 3552 w
10 R f
(ALIGNMENT)1270 3552 w
10 S f
(_)1863 3552 w
10 R f
(REQ:)1913 3552 w
(This \257ag indicates that the hardware requires the ABI alignment.)9 2662 1 1470 3672 t
10 S f
(_)1220 3828 w
10 R f
(ALIGNMENT)1270 3828 w
10 S f
(_)1863 3828 w
10 R f
(OPT:)1913 3828 w
( Perfor-)1 367( not require the ABI alignment.)5 1389(This \257ag indicates that the hardware does)6 1814 3 1470 3948 t
(mance penalty is not considered.)4 1338 1 1470 4068 t
10 S f
(_)970 4224 w
10 R f
(FIRMWARE)1020 4224 w
10 S f
(_)1559 4224 w
10 R f
(NEEDS)1609 4224 w
10 S f
(_)1931 4224 w
10 R f
(FDISK)1981 4224 w
(This indicates the presence/absence of an fdisk table.)7 2173 1 1220 4344 t
10 S f
(_)1220 4500 w
10 R f
(FIRMWARE)1270 4500 w
10 S f
(_)1809 4500 w
10 R f
(NEEDS)1859 4500 w
10 S f
(_)2181 4500 w
10 R f
(FDISK)2231 4500 w
( present, it allows a disk to be sub-)8 1473( If)1 135( table is required by system \256rmware.)6 1572(The fdisk)1 390 4 1470 4620 t
( to a separate, virtual)4 870(divided into multiple fdisk partitions, each of which is equivalent)9 2700 2 1470 4740 t
( on a shared hard)4 769( enables the co-existence of multiple operating systems)7 2352(disk. This)1 449 3 1470 4860 t
(disk.)1470 4980 w
10 S f
(_)1220 5136 w
10 R f
(NO)1270 5136 w
10 S f
(_)1414 5136 w
10 R f
(FDISK)1464 5136 w
10 S f
(_)1753 5136 w
10 R f
(PRESENT)1803 5136 w
( assumed that the entire media is allocated for a single)10 2273(If the fdisk table is absent, it is)7 1297 2 1470 5256 t
(operating system.)1 713 1 1470 5376 t
10 B f
( Arguments)1 510(3.2. Variable)1 588 2 720 5616 t
10 R f
( the majority of the interface changes)6 1557(The PowerPC ABI speci\256es the argument passing conventions and)8 2763 2 720 5772 t
( discussions were)2 721( Those)1 313(required to support variable arguments are discussed and approved in that case.)11 3286 3 720 5892 t
( case, nor should they)4 924( pair of related interfaces were not discussed in that)9 2170( A)1 143(extensive and contentious.)2 1083 4 720 6012 t
( references 1 and 4 for more details.)7 1490( See)1 210( are approved by this case.)5 1098( They)1 271(have been.)1 434 5 720 6132 t
10 B f
(3.2.1. va)1 391 1 720 6372 t
10 S f
(_)1111 6372 w
10 B f
(copy\(\))1161 6372 w
10 R f
( as)1 125(For most current processors and argument passing conventions, a simple pointer to memory is used)14 4195 2 720 6528 t
(the underlying type of a va)5 1183 1 720 6648 t
10 S f
(_)1903 6648 w
10 R f
( and array of size one of a structure to implement a)11 2262( uses)1 219(list. PowerPC)1 606 3 1953 6648 t
(va)720 6768 w
10 S f
(_)814 6768 w
10 R f
( with applications which wish to ``save their place'' in an argument list.)12 3051( cause dif\256culties)2 727(list. This)1 398 3 864 6768 t
( simply assigning one instance of a va)7 1609(Currently, this is done in the non-portable way of)8 2085 2 720 6888 t
10 S f
(_)4414 6888 w
10 R f
(list to another)2 576 1 4464 6888 t
(which assumes that a va)4 1013 1 720 7008 t
10 S f
(_)1733 7008 w
10 R f
( project proposes that a macro be)6 1397( This)1 248(list is a simple type, such as a pointer.)8 1612 3 1783 7008 t
( does)1 218( This)1 246(de\256ned to provide a portable method of ``saving your place'' across Solaris implementations.)12 3856 3 720 7128 t
(not address the problem of source portable across other operating systems.)10 3055 1 720 7248 t
10 I f
( Proprietary Information)2 1016(psarc/1994/196 Sun)1 3304 2 720 7680 t
cleartomark
showpage
restore
%%EndPage: 2 2
%%Page: 3 3
save
mark
3 pagesetup
10 R f
(- 3 -)2 182 1 2789 480 t
(The macro va)2 564 1 720 840 t
10 S f
(_)1284 840 w
10 R f
(copy has the following de\256nition:)4 1382 1 1334 840 t
(va)720 996 w
10 S f
(_)814 996 w
10 R f
(copy\(va)864 996 w
10 S f
(_)1185 996 w
10 R f
(list dest, va)2 469 1 1235 996 t
10 S f
(_)1704 996 w
10 R f
(list src\))1 305 1 1754 996 t
(The va)1 284 1 970 1116 t
10 S f
(_)1254 1116 w
10 R f
( the va)2 288(copy\(\) macro saves the state represented by)6 1799 2 1304 1116 t
10 S f
(_)3391 1116 w
10 R f
(list src in the va)4 677 1 3441 1116 t
10 S f
(_)4118 1116 w
10 R f
( va)1 130( The)1 224(list dest.)1 345 3 4168 1116 t
10 S f
(_)4867 1116 w
10 R f
(list)4917 1116 w
( not be initialized by a previous call to va)9 1849(passed as dest should)3 921 2 970 1236 t
10 S f
(_)3740 1236 w
10 R f
(start\(\) and must be passed to)5 1250 1 3790 1236 t
(va)970 1356 w
10 S f
(_)1064 1356 w
10 R f
(end\(\) before being reused as a parameter to va)8 1931 1 1114 1356 t
10 S f
(_)3045 1356 w
10 R f
( subsequent)1 481(start\(\) or as the dest parameter of a)7 1464 2 3095 1356 t
(call to va)2 382 1 970 1476 t
10 S f
(_)1352 1476 w
10 R f
( behavior is unde\256ned should any of the restrictions above not be met.)12 2901(copy. The)1 440 2 1402 1476 t
(This macro will be implemented in)5 1452 1 720 1632 t
10 S1 f
(<)2207 1632 w
10 R f
(stdarg.h)2263 1632 w
10 S1 f
(>)2582 1632 w
10 R f
(,)2638 1632 w
10 S1 f
(<)2698 1632 w
10 R f
(varargs.h)2754 1632 w
10 S1 f
(>)3122 1632 w
10 R f
(and)3213 1632 w
10 S1 f
(<)3392 1632 w
10 R f
(sys/varargs.h)3448 1632 w
10 S1 f
(>)3972 1632 w
10 R f
( multiple \256les are)3 730(. \(The)1 282 2 4028 1632 t
( restricts the namespace in the \256rst)6 1435( that ANSI-C x3.159-1989)3 1096( Note)1 262(historic and not altered by this case.\))6 1527 4 720 1752 t
( \256les, so this macro will not be visible when ANSI-C, POSIX, or X/Open conformant com-)15 3812(two of these)2 508 2 720 1872 t
(pilations are speci\256ed.)2 912 1 720 1992 t
10 B f
(3.2.2.)720 2232 w
10 S f
(__)1011 2232 w
10 B f
(builtin)1111 2232 w
10 S f
(_)1396 2232 w
10 B f
(va)1446 2232 w
10 S f
(_)1546 2232 w
10 B f
(info)1596 2232 w
10 R f
( and compi-)2 495(PSARC/1993/138, ``Compiler Prede\256nes'', de\256nes Public interfaces between the ON headers)9 3825 2 720 2388 t
( symbols)1 376( These)1 313( allow special compiler processing for a well de\256ned set of symbols.)11 2922(lation systems to)2 709 4 720 2508 t
(are)720 2628 w
10 S f
(__)889 2628 w
10 R f
(builtin)989 2628 w
10 S f
(_)1251 2628 w
10 R f
(alloca,)1301 2628 w
10 S f
(__)1612 2628 w
10 R f
(builtin)1712 2628 w
10 S f
(_)1974 2628 w
10 R f
(va)2024 2628 w
10 S f
(_)2118 2628 w
10 R f
(alist, and)1 384 1 2168 2628 t
10 S f
(__)2600 2628 w
10 R f
(builtin)2700 2628 w
10 S f
(_)2962 2628 w
10 R f
(va)3012 2628 w
10 S f
(_)3106 2628 w
10 R f
(arg)3156 2628 w
10 S f
(_)3283 2628 w
10 R f
( by the feature test)4 833(incr and are enabled)3 874 2 3333 2628 t
(macro)720 2748 w
10 S f
(__)1002 2748 w
10 R f
(BUILTIN)1102 2748 w
10 S f
(_)1501 2748 w
10 R f
(VA)1551 2748 w
10 S f
(_)1695 2748 w
10 R f
(ARG)1745 2748 w
10 S f
(_)1956 2748 w
10 R f
( reference 3 for more details.)5 1191(INCR. See)1 474 2 2006 2748 t
(Using the same feature test macro,)5 1525 1 720 2904 t
10 S f
(__)2299 2904 w
10 R f
(BUILTIN)2399 2904 w
10 S f
(_)2798 2904 w
10 R f
(VA)2848 2904 w
10 S f
(_)2992 2904 w
10 R f
(ARG)3042 2904 w
10 S f
(_)3253 2904 w
10 R f
(INCR, PowerPC does not use or de\256ne)6 1737 1 3303 2904 t
10 S f
(_)720 3024 w
10 R f
(builtin)770 3024 w
10 S f
(_)1032 3024 w
10 R f
(va)1082 3024 w
10 S f
(_)1176 3024 w
10 R f
(alist or)1 296 1 1226 3024 t
10 S f
(__)1568 3024 w
10 R f
(builtin)1668 3024 w
10 S f
(_)1930 3024 w
10 R f
(va)1980 3024 w
10 S f
(_)2074 3024 w
10 R f
(arg)2124 3024 w
10 S f
(_)2251 3024 w
10 R f
( additionally de\256nes)2 851(incr and)1 345 2 2301 3024 t
10 S f
(__)3542 3024 w
10 R f
(builtin)3642 3024 w
10 S f
(_)3904 3024 w
10 R f
(va)3954 3024 w
10 S f
(_)4048 3024 w
10 R f
( compilation)1 523(info. The)1 419 2 4098 3024 t
(system is able to generate code to initialize the va)9 2055 1 720 3144 t
10 S f
(_)2775 3144 w
10 R f
(list structure when recognizing this symbol.)5 1789 1 2825 3144 t
( formerly ISA independent)3 1169( The)1 245( this case and de\256nition alters/expands PSARC/1993/138.)6 2506(Note that)1 400 4 720 3300 t
( for SPARC and)3 695(speci\256cation is not ISA dependent where the original case de\256nes the set of keywords)13 3625 2 720 3420 t
(x86 and this case alters that set for PowerPC.)8 1870 1 720 3540 t
10 B f
( Layout Issues)2 628(3.2.3. Disk)1 486 2 720 3780 t
10 R f
( issues of disk layout \(``fdisk'' partitions, VTOC format\))8 2350(Although not directly related to header \256les, the)7 1970 2 720 3936 t
(were raised during the discussion of this case and are addressed by this case.)13 3158 1 720 4056 t
(--- fdisk discussion to be added ---)6 1423 1 720 4212 t
( signi\256cant differences between the SPARC and x86 VTOC \(Volume Table of Con-)12 3518(Currently, there are)2 802 2 720 4368 t
( that the SPARC VTOC only supports 8 slices while the x86 version)12 2847( signi\256cant difference is)3 992(tents\). One)1 481 3 720 4488 t
( sector support)2 638( disparity was justi\256ed by the assertion that x86 boot and alternate)11 2909( This)1 260(supports 16.)1 513 4 720 4608 t
( this turned out)3 627( the case of alternate sectors,)5 1191( In)1 150(requires additional partitions \(leaving fewer for the user\).)7 2352 4 720 4728 t
( there have been user requests for)6 1418( However,)1 462( a requirement.)2 629(to be an implementation choice, rather than)6 1811 4 720 4848 t
(supporting a larger number of slices.)5 1504 1 720 4968 t
( was some disagreement if this)5 1339( There)1 312(The ARC expressed the desire for an architecture for VTOCs.)9 2669 3 720 5124 t
( was)1 192(meant clear de\256nitions of big-endian and little-endian versions or if a more elaborate, XDR VTOC)14 4128 2 720 5244 t
( the PPC)2 369( ARC did not believe that resolving this issue was the responsibility of)12 2918( The)1 221(the correct solution.)2 812 4 720 5364 t
( the VTOC on a little-endian port of Solaris)8 1807(Project Team and allowed the use of the current x86 form of)11 2513 2 720 5484 t
( does not set a precedent for future ports.)8 1696( This)1 244(to PowerPC.)1 514 3 720 5604 t
10 B f
( Table)1 278(3.3. Interface)1 603 2 720 5844 t
10 S f
(_ __________________________________________________________________________________)1 4111 1 720 5960 t
10 R f
(Interfaces Exported)1 791 1 2380 6080 t
10 S f
(_ __________________________________________________________________________________)1 4111 1 720 6100 t
10 R f
( Comments)1 589(Interface Classi\256cation)1 2120 2 770 6220 t
10 S f
( \347)1 -4111(_ __________________________________________________________________________________)1 4111 2 720 6240 t
(\347)720 6160 w
(\347)720 6060 w
(\347)2270 6240 w
(\347)2270 6200 w
(\347)2970 6240 w
(\347)2970 6200 w
(\347)4831 6240 w
(\347)4831 6160 w
(\347)4831 6060 w
10 S1 f
(<)770 6360 w
10 R f
(sys/isa)826 6360 w
10 S f
(_)1093 6360 w
10 R f
(defs.h)1143 6360 w
10 S1 f
(>)1384 6360 w
10 R f
(Public)2345 6360 w
10 S f
(_)770 6480 w
10 R f
(CHAR)820 6480 w
10 S f
(_)1098 6480 w
10 R f
( test macro \(see PSARC/1993/444\))4 1437( Feature)1 743(ALIGNMENT Public)1 1453 3 1148 6480 t
10 S f
(_)770 6600 w
10 R f
(SHORT)820 6600 w
10 S f
(_)1148 6600 w
10 R f
( test macro \(see PSARC/1993/444\))4 1437( Feature)1 743(ALIGNMENT Public)1 1403 3 1198 6600 t
10 S f
(_)770 6720 w
10 R f
(INT)820 6720 w
10 S f
(_)986 6720 w
10 R f
( test macro \(see PSARC/1993/444\))4 1437( Feature)1 743(ALIGNMENT Public)1 1565 3 1036 6720 t
10 S f
(_)770 6840 w
10 R f
(LONG)820 6840 w
10 S f
(_)1097 6840 w
10 R f
( test macro \(see PSARC/1993/444\))4 1437( Feature)1 743(ALIGNMENT Public)1 1454 3 1147 6840 t
10 S f
(_)770 6960 w
10 R f
(LONG)820 6960 w
10 S f
(_)1097 6960 w
10 R f
(LONG)1147 6960 w
10 S f
(_)1424 6960 w
10 R f
( test macro \(see PSARC/1993/444\))4 1437( Feature)1 743(ALIGNMENT Public)1 1127 3 1474 6960 t
10 S f
(_)770 7080 w
10 R f
(DOUBLE)820 7080 w
10 S f
(_)1225 7080 w
10 R f
( test macro \(see PSARC/1993/444\))4 1437( Feature)1 743(ALIGNMENT Public)1 1326 3 1275 7080 t
10 S f
(_)770 7200 w
10 R f
(LONG)820 7200 w
10 S f
(_)1097 7200 w
10 R f
(DOUBLE)1147 7200 w
10 S f
(_)1552 7200 w
10 R f
( test macro \(see PSARC/1993/444\))4 1437( Feature)1 743(ALIGNMENT Public)1 999 3 1602 7200 t
10 S f
( \347)1 -4111(_ __________________________________________________________________________________)1 4111 2 720 7220 t
(\347)720 7140 w
(\347)720 7040 w
(\347)720 6940 w
(\347)720 6840 w
(\347)720 6740 w
(\347)720 6640 w
(\347)720 6540 w
(\347)720 6440 w
(\347)720 6340 w
(\347)2270 7220 w
(\347)2270 7160 w
(\347)2270 7060 w
(\347)2270 6960 w
(\347)2270 6860 w
(\347)2270 6760 w
(\347)2270 6660 w
(\347)2270 6560 w
(\347)2270 6460 w
(\347)2270 6360 w
(\347)2970 7220 w
(\347)2970 7160 w
(\347)2970 7060 w
(\347)2970 6960 w
(\347)2970 6860 w
(\347)2970 6760 w
(\347)2970 6660 w
(\347)2970 6560 w
(\347)2970 6460 w
(\347)2970 6360 w
(\347)4831 7220 w
(\347)4831 7140 w
(\347)4831 7040 w
(\347)4831 6940 w
(\347)4831 6840 w
(\347)4831 6740 w
(\347)4831 6640 w
(\347)4831 6540 w
(\347)4831 6440 w
(\347)4831 6340 w
10 I f
( Proprietary Information)2 1016(psarc/1994/196 Sun)1 3304 2 720 7680 t
cleartomark
showpage
restore
%%EndPage: 3 3
%%Page: 4 4
save
mark
4 pagesetup
10 R f
(- 4 -)2 182 1 2789 480 t
10 S f
(_ __________________________________________________________________________________)1 4111 1 720 740 t
10 R f
(Interfaces Exported)1 791 1 2380 860 t
10 S f
(_ __________________________________________________________________________________)1 4111 1 720 880 t
10 R f
( Comments)1 589(Interface Classi\256cation)1 2120 2 770 1000 t
10 S f
( \347)1 -4111(_ __________________________________________________________________________________)1 4111 2 720 1020 t
(\347)720 940 w
(\347)720 840 w
(\347)2270 1020 w
(\347)2270 980 w
(\347)2970 1020 w
(\347)2970 980 w
(\347)4831 1020 w
(\347)4831 940 w
(\347)4831 840 w
(_)770 1140 w
10 R f
(POINTER)820 1140 w
10 S f
(_)1242 1140 w
10 R f
( test macro \(see PSARC/1993/444\))4 1437( Feature)1 743(ALIGNMENT Public)1 1309 3 1292 1140 t
10 S f
(_)770 1260 w
10 R f
(MAX)820 1260 w
10 S f
(_)1053 1260 w
10 R f
( test macro \(see PSARC/1993/444\))4 1437( Feature)1 743(ALIGNMENT Public)1 1498 3 1103 1260 t
10 S f
(_)770 1380 w
10 R f
(ALIGNMENT)820 1380 w
10 S f
(_)1413 1380 w
10 R f
( test macro \(see PSARC/1993/444\))4 1437( Feature)1 743(REQ Public)1 1138 3 1463 1380 t
10 S f
(_)770 1500 w
10 R f
(ALIGNMENT)820 1500 w
10 S f
(_)1413 1500 w
10 R f
( test macro \(see PSARC/1993/444\))4 1437( Feature)1 743(OPT Public)1 1138 3 1463 1500 t
10 S f
(_)770 1620 w
10 R f
(FIRMWARE)820 1620 w
10 S f
(_)1359 1620 w
10 R f
(NEEDS)1409 1620 w
10 S f
(_)1731 1620 w
10 R f
( test macro \(see PSARC/1993/444\))4 1437( Feature)1 743(FDISK Public)1 820 3 1781 1620 t
10 S f
(_)770 1740 w
10 R f
(NO)820 1740 w
10 S f
(_)964 1740 w
10 R f
(FDISK)1014 1740 w
10 S f
(_)1303 1740 w
10 R f
( test macro \(see PSARC/1993/444\))4 1437( Feature)1 743(PRESENT Public)1 1248 3 1353 1740 t
(va)770 1860 w
10 S f
(_)864 1860 w
10 R f
( varargs macro)2 608( Additional)1 872(copy\(\) Public)1 1687 3 914 1860 t
10 S f
(__)770 1980 w
10 R f
(builtin)870 1980 w
10 S f
(_)1132 1980 w
10 R f
(va)1182 1980 w
10 S f
(_)1276 1980 w
10 R f
( PSARC/1992/138)1 757( See)1 588(info\(\) Public)1 1275 3 1326 1980 t
10 S1 f
(<)770 2100 w
10 R f
(sys/va)826 2100 w
10 S f
(_)1076 2100 w
10 R f
(list.h)1126 2100 w
10 S1 f
(>)1324 2100 w
10 R f
( name)1 249(Uncommitted File)1 856 2 2345 2100 t
( Solaris PPC partition)3 895( Identi\256es)1 816( Public)1 844(Solaris FDISK ID \(130\))3 987 4 770 2220 t
10 S f
( \347)1 -4111(_ __________________________________________________________________________________)1 4111 2 720 2240 t
(\347)720 2220 w
(\347)720 2120 w
(\347)720 2020 w
(\347)720 1920 w
(\347)720 1820 w
(\347)720 1720 w
(\347)720 1620 w
(\347)720 1520 w
(\347)720 1420 w
(\347)720 1320 w
(\347)720 1220 w
(\347)720 1120 w
(\347)2270 2240 w
(\347)2270 2140 w
(\347)2270 2040 w
(\347)2270 1940 w
(\347)2270 1840 w
(\347)2270 1740 w
(\347)2270 1640 w
(\347)2270 1540 w
(\347)2270 1440 w
(\347)2270 1340 w
(\347)2270 1240 w
(\347)2270 1140 w
(\347)2970 2240 w
(\347)2970 2140 w
(\347)2970 2040 w
(\347)2970 1940 w
(\347)2970 1840 w
(\347)2970 1740 w
(\347)2970 1640 w
(\347)2970 1540 w
(\347)2970 1440 w
(\347)2970 1340 w
(\347)2970 1240 w
(\347)2970 1140 w
(\347)4831 2240 w
(\347)4831 2220 w
(\347)4831 2120 w
(\347)4831 2020 w
(\347)4831 1920 w
(\347)4831 1820 w
(\347)4831 1720 w
(\347)4831 1620 w
(\347)4831 1520 w
(\347)4831 1420 w
(\347)4831 1320 w
(\347)4831 1220 w
(\347)4831 1120 w
10 B f
( Opinion\(s\))1 490(4. Minority)1 524 2 720 2540 t
10 R f
(** Dissenting opinion. **)3 1058 1 720 2696 t
10 B f
( Information)1 555(5. Advisory)1 530 2 720 2936 t
10 R f
(--- something about cmdk/sd? ---)4 1352 1 720 3092 t
( is some disagreement if this means clear)7 1772( There)1 309( should be created.)3 805(A project to regularize the VTOC)5 1434 4 720 3248 t
( if a more elaborate, XDR VTOC is the correct)9 2062(de\256nitions of big-endian and little-endian versions or)6 2258 2 720 3368 t
( compatibility must be maintained.)4 1424(solution. Backwards)1 857 2 720 3488 t
10 B f
(6. Appendices)1 636 1 720 3728 t
( A: Technical Changes Required)4 1421(6.1. Appendix)1 634 2 720 3968 t
10 R f
( the sys)2 326( not reserve)2 489(1. Do)1 372 3 970 4160 t
10 S f
(_)2157 4160 w
10 R f
( the \256rst project which asserts a need for)8 1717( Allow)1 321(sysppc system call.)2 795 3 2207 4160 t
(it to de\256ne it.)3 558 1 1220 4280 t
10 B f
( B: Technical Changes Advised)4 1361(6.2. Appendix)1 634 2 720 4520 t
( C: Reference Material)3 1000(6.3. Appendix)1 634 2 720 4796 t
10 R f
( PowerPC ABI, Steve Z.)4 1211(1. psarc/1993/685,)1 891 2 720 4988 t
( Interface, PowePC Processor Supplement \(Draft\), Steve Z.;)7 2800( V Application Binary)3 975(2. System)1 545 3 720 5144 t
(SunSoft, K. K.; IBM, March 1995)5 1619 1 970 5264 t
( Add isa)2 349(3. psarc/1993/444,)1 891 2 720 5420 t
10 S f
(_)1960 5420 w
10 R f
(defs.h, Joseph Kowalski)2 987 1 2010 5420 t
( Compiler Prede\256nes, Lee Bieber)4 1366(4. psarc/1993/138,)1 891 2 720 5576 t
( \(This case\))2 481(5. psarc/1994/168/materials/issue4.varargs)1 1856 2 720 5732 t
( x86 Disk Layout, Kevin S.)5 1289(6. psarc/1993/015,)1 891 2 720 5888 t
10 I f
( Proprietary Information)2 1016(psarc/1994/196 Sun)1 3304 2 720 7680 t
cleartomark
showpage
restore
%%EndPage: 4 4
%%Trailer
done
%%DocumentFonts: Times-Bold Helvetica Times-Roman Symbol Times-Italic
%%Pages: 4
From jek3@jurassic Thu Jul 6 16:22:16 1995
Date: Thu, 6 Jul 1995 16:20:52 -0700
From: jek3@jurassic (Joseph Kowalski)
To: psarc@sac
Subject: Opinion: PSARC/1994/196
Cc: billt@West, stevez@West, abe@West, ralphb@jurassic
Content-Length: 64806
Comments by 7/13/95 please.
sun
microsystems Systems Architecture Committee
_________________________________________________________________
Subject: PowerPC Header Files
Submitted by: Bill Taylor
File: psarc/1994/196/opinion.ms
Date: July 5th, 1995.
Committee: Joseph Kowalski, Steve Chessin, Mark Kampe,
Terrence Miller, Bill Shannon, Glenn Skinner.
Abstensions: David Robinson.
1. Summary
This proposal establishes the modifications to be made to
common, instruction set independent header files to support
PowerPC.
2. Decision & Precedence Information
The proposal is accepted.
The classification is minor.
A true port to a new instruction set architecture would be
expected to produce a micro change to the system. In this
case, the project team decided to enhance the system in
order to produce a superior port. It would have been possi-
ble to define this project such as to qualify for a micro
classification.
This project is subset of the larger ``Solaris for PowerPC''
project, which was broken into subprojects to aid the review
process. All of the subprojects must be delivered simul-
taneously.
PSARC/1993/685 PowerPC ABI
PSARC/1994/188 Solaris Kernel for PowerPC
PSARC/1994/196 PowerPC Headers
PSARC/1994/197 PowerPC Commands
PSARC/1994/198 PowerPC System Libraries
PSARC/1994/302 PowerPC Booting
3. Opinion
Although this case started out as complex and interesting,
it was determined that most of the interesting bits were
psarc/1994/196 Copyright 1995 Sun Microsystems, Inc.
- 2 -
better attributed to other cases. The controversial issues
associated with the implementation of varargs(5) were
assigned to PSARC/1993/685, "PowerPC ABI" although the
implementation is visible in the headers. A similar deci-
sion was made with respect to the value of _NFILES.
3.1. Global Flags
PSARC/1993/444, ``Add isa_defs.h'', approves a policy of
``say what you mean'' for conditional compilation. If the
code is dependent on the endianness of the platform, the
conditional should be based on that, not on a disjunction of
supported instruction set architectures. That case is
incomplete because it doesn't specify a commitment level.
This case clarifies PSARC/1993/444 to specify a commitment
level of Public for both the name and
feature test macros defined within. See reference [3] for
more details.
The port of Solaris to PowerPC has uncovered additional
feature test macros that should be defined in
. The additional macros and definitions
which reflect processor characteristics are:
_CHAR_ALIGNMENT
_SHORT_ALIGNMENT
_INT_ALIGNMENT
_LONG_ALIGNMENT
_LONG_LONG_ALIGNMENT
_DOUBLE_ALIGNMENT
_LONG_DOUBLE_ALIGNMENT
_POINTER_ALIGNMENT:
The ABI defines alignment requirements of each of
the primitive object types. Some, if not all, may
be hardware requirements as well. The values are
expressed in "byte-alignment" units.
_MAX_ALIGNMENT:
The most stringent alignment requirement as speci-
fied by the ABI. Equal to the maximum of all the
above _XXX_ALIGNMENT values.
_ALIGNMENT_REQ
How absolute are the alignment requirements.
_ALIGNMENT_REQ:
This flag indicates that the hardware
psarc/1994/196 Copyright 1995 Sun Microsystems, Inc.
- 3 -
requires the ABI alignment.
_ALIGNMENT_OPT:
This flag indicates that the hardware does
not require the ABI alignment. Performance
penalty is not considered.
_FIRMWARE_NEEDS_FDISK
This indicates the presence/absence of an fdisk
table.
_FIRMWARE_NEEDS_FDISK
The fdisk table is required by system
firmware. If present, it allows a disk to be
subdivided into multiple fdisk partitions,
each of which is equivalent to a separate,
virtual disk. This enables the co-existence
of multiple operating systems on a shared
hard disk.
_NO_FDISK_PRESENT
If the fdisk table is absent, it is assumed
that the entire media is allocated for a sin-
gle operating system.
3.2. Variable Arguments
The PowerPC ABI specifies the argument passing conventions
and the majority of the interface changes required to sup-
port variable arguments are discussed and approved in that
case. Those discussions were extensive and contentious. A
pair of related interfaces were not discussed in that case,
nor should they have been. They are approved by this case.
See references [1], [2] and [4] for more details.
3.2.1. va_copy()
For most current processors and argument passing conven-
tions, a simple pointer to memory is used as the underlying
type of a va_list. PowerPC uses an array (of size one) of a
structure to implement a va_list. It does this because the
argument passing convention, which passes floating point
arguments in floating point registers, requires multiple
pointers to transverse the argument list (see [2]). This
causes difficulties with applications that wish to ``save
their place'' in an argument list. Currently, this is done
in the non-portable way of simply assigning one instance of
a va_list to another which assumes that a va_list is a
assignable type, such as a pointer. This project proposes
that a macro be defined to provide a portable method of
``saving your place'' across Solaris implementations. This
does not address the problem of source portable across other
operating systems.
psarc/1994/196 Copyright 1995 Sun Microsystems, Inc.
- 4 -
The macro va_copy has the following definition:
va_copy(va_list dest, va_list src)
The va_copy() macro saves the state represented by the
va_list src in the va_list dest. The va_list passed as
dest should not be initialized by a previous call to
va_start() and must be passed to va_end() before being
reused as a parameter to va_start() or as the dest
parameter of a subsequent call to va_copy. The
behavior is undefined should any of the restrictions
above not be met.
This macro will be implemented in ,
and . (The multiple files are historic and
not altered by this case.) Note that ANSI-C x3.159-1989
restricts the namespace in the first two of these files, so
this macro will not be visible when ANSI-C, POSIX, or X/Open
conformant compilations are specified.
3.2.2. __builtin_va_info
PSARC/1993/138, ``Compiler Predefines'', defines Public
interfaces between the ON headers and compilation systems to
allow special compiler processing for a well defined set of
symbols. These symbols are __builtin_alloca,
__builtin_va_alist, and __builtin_va_arg_incr and are
enabled by the feature test macro __BUILTIN_VA_ARG_INCR.
See reference 3 for more details.
Using the same feature test macro, __BUILTIN_VA_ARG_INCR,
PowerPC does not use or define _builtin_va_alist or
__builtin_va_arg_incr and additionally defines
__builtin_va_info. The compilation system is able to gen-
erate code to initialize the va_list structure when recog-
nizing this symbol.
Note that this case and definition alters/expands
PSARC/1993/138. The formerly ISA independent specification
is now ISA dependent. The original case defined the set of
reserved words. These now apply only to SPARC and x86.
This case alters that set for PowerPC.
3.3. Disk Layout Issues
Although not directly related to header files, disk layout
issues (``fdisk'' partitions, VTOC format) were raised dur-
ing the discussion of this case and are addressed by this
case.
The industry standard specifications (PREP/CHRP) specify the
use of an ``fdisk'' disk partitioning scheme as is de facto
standard on the Intel based platforms. The intent of this
is to support multiple operating systems. Unfortunately,
support of Virtual Open Firmware and legacy PROMS means that
psarc/1994/196 Copyright 1995 Sun Microsystems, Inc.
- 5 -
Solaris consumes three of the four available partitions.
The project team informed the ARC that the NT port has the
same property effectively negating the multiple OS intent of
the ``fdisk'' partitioning. The ARC saw no alternative to
the use of ``fdisk'' partitions. The ARC was unsatisfied
that there was no absolute alternative to consuming three of
the four partitions, but approved this usage.
Currently, there are significant differences between the
SPARC and x86 VTOC (Volume Table of Contents). One signifi-
cant difference is that the SPARC VTOC only supports 8
slices while the x86 version supports 16. This disparity
was justified by the assertion that x86 boot and alternate
sector support requires additional partitions (leaving fewer
for the user). In the case of alternate sectors, this
turned out to be an implementation choice, rather than a
requirement. However, there have been user requests for
supporting a larger number of slices.
The ARC expressed the desire for an architecture for VTOCs.
There was some disagreement if this meant clear definitions
of big-endian and little-endian versions or if a more ela-
borate, XDR VTOC was the correct solution. The ARC did not
believe that resolving this issue was the responsibility of
the PPC Project Team and allowed the use of the current x86
form of the VTOC on a little-endian port of Solaris to
PowerPC. This does not set a precedent for future ports.
3.4. Interface Table
___________________________________________________________________________________
| Interfaces Exported |
|______________________|________________|_________________________________________|
|Interface | Classification| Comments |
|______________________|________________|_________________________________________|
| | Public | File name |
|_CHAR_ALIGNMENT | Public | Feature test macro (see PSARC/1993/444)|
|_SHORT_ALIGNMENT | Public | Feature test macro (see PSARC/1993/444)|
|_INT_ALIGNMENT | Public | Feature test macro (see PSARC/1993/444)|
|_LONG_ALIGNMENT | Public | Feature test macro (see PSARC/1993/444)|
|_LONG_LONG_ALIGNMENT | Public | Feature test macro (see PSARC/1993/444)|
|_DOUBLE_ALIGNMENT | Public | Feature test macro (see PSARC/1993/444)|
|_LONG_DOUBLE_ALIGNMENT| Public | Feature test macro (see PSARC/1993/444)|
|_POINTER_ALIGNMENT | Public | Feature test macro (see PSARC/1993/444)|
|_MAX_ALIGNMENT | Public | Feature test macro (see PSARC/1993/444)|
|_ALIGNMENT_REQ | Public | Feature test macro (see PSARC/1993/444)|
|_ALIGNMENT_OPT | Public | Feature test macro (see PSARC/1993/444)|
|_FIRMWARE_NEEDS_FDISK | Public | Feature test macro (see PSARC/1993/444)|
|_NO_FDISK_PRESENT | Public | Feature test macro (see PSARC/1993/444)|
|va_copy() | Public | Additional varargs macro |
|__builtin_va_info() | Public | See PSARC/1992/138 |
| | Uncommitted | File name |
|Solaris FDISK ID (130)| Public | Identifies Solaris PPC partition |
|______________________|________________|_________________________________________|
psarc/1994/196 Copyright 1995 Sun Microsystems, Inc.
- 6 -
___________________________________________________________________________________
| Interfaces Exported |
|______________________|________________|_________________________________________|
|Interface | Classification| Comments |
|______________________|________________|_________________________________________|
|______________________|________________|_________________________________________|
4. Minority Opinion(s)
None.
5. Advisory Information
This case touched upon the long unresolved issue of the cmdk
driver. With one exception, the ARC expressed dismay that
this implementation was ported to another instruction set
architecture without the review it should have had before
originally being shipped as part of the ``Solaris for
Intel'' product. The possibility of adding a dependency on
that review to the ``Solaris on PowerPC'' was considered
(actually expressed at the inception review). However, such
a dependency was not considered to be in the best interests
of the corporation. Instead, the weak alternative of the
following ``Advisory Information'' was decided upon.
A project to unify the disk driver architectures for
SCSI and direct attach devices should be initiated.
Further investigation should be made into ways to restore
the multiple OS support to the ``fdisk'' mechanism. This
may not be possible or practical until the industry direc-
tion is clearer.
A project to regularize the VTOC should be created. There
is some disagreement if this means clear definitions of
big-endian and little-endian versions or if a more ela-
borate, XDR VTOC is the correct solution. Backwards compa-
tibility must be maintained.
6. Appendices
6.1. Appendix A: Technical Changes Required
1. Do not reserve the sys_sysppc system call. Allow
the first project which asserts a need for it to
define it.
6.2. Appendix B: Technical Changes Advised
None.
psarc/1994/196 Copyright 1995 Sun Microsystems, Inc.
- 7 -
6.3. Appendix C: Reference Material
1. psarc/1993/685, PowerPC ABI, Steve Z.
2. System V Application Binary Interface, PowerPC Proces-
sor Supplement (Draft), Steve Z., SunSoft; K.
K., IBM, March 1995
3. psarc/1993/444, Add isa_defs.h, Joseph Kowalski
4. psarc/1993/138, Compiler Predefines, Lee Bieber
5. psarc/1994/168/materials/issue4.varargs (This case)
6. psarc/1993/015, x86 Disk Layout, Kevin S.
psarc/1994/196 Copyright 1995 Sun Microsystems, Inc.
----------
X-Sun-Data-Type: postscript-file
X-Sun-Data-Description: postscript-file
X-Sun-Data-Name: opinion.ps
X-Sun-Charset: us-ascii
X-Sun-Content-Lines: 1176
%!PS
%%Version: 3.15
%%DocumentFonts: (atend)
%%Pages: (atend)
%%EndComments
%ident "@(#)lp:filter/postscript/postscript/dpost.ps 1.1"
%
% Version 3.16 prologue for troff files.
%
/#copies 1 store
/aspectratio 1 def
/formsperpage 1 def
/landscape false def
/linewidth .3 def
/magnification 1 def
/margin 0 def
/orientation 0 def
/resolution 720 def
/xoffset 0 def
/yoffset 0 def
/roundpage true def
/useclippath true def
/pagebbox [0 0 612 792] def
/R /Times-Roman def
/I /Times-Italic def
/B /Times-Bold def
/BI /Times-BoldItalic def
/H /Helvetica def
/HI /Helvetica-Oblique def
/HB /Helvetica-Bold def
/HX /Helvetica-BoldOblique def
/CW /Courier def
/CO /Courier def
/CI /Courier-Oblique def
/CB /Courier-Bold def
/CX /Courier-BoldOblique def
/PA /Palatino-Roman def
/PI /Palatino-Italic def
/PB /Palatino-Bold def
/PX /Palatino-BoldItalic def
/Hr /Helvetica-Narrow def
/Hi /Helvetica-Narrow-Oblique def
/Hb /Helvetica-Narrow-Bold def
/Hx /Helvetica-Narrow-BoldOblique def
/KR /Bookman-Light def
/KI /Bookman-LightItalic def
/KB /Bookman-Demi def
/KX /Bookman-DemiItalic def
/AR /AvantGarde-Book def
/AI /AvantGarde-BookOblique def
/AB /AvantGarde-Demi def
/AX /AvantGarde-DemiOblique def
/NR /NewCenturySchlbk-Roman def
/NI /NewCenturySchlbk-Italic def
/NB /NewCenturySchlbk-Bold def
/NX /NewCenturySchlbk-BoldItalic def
/ZD /ZapfDingbats def
/ZI /ZapfChancery-MediumItalic def
/VR /Varitimes#Roman def
/VI /Varitimes#Italic def
/VB /Varitimes#Bold def
/VX /Varitimes#BoldItalic def
/S /S def
/S1 /S1 def
/GR /Symbol def
/inch {72 mul} bind def
/min {2 copy gt {exch} if pop} bind def
/setup {
counttomark 2 idiv {def} repeat pop
landscape {/orientation 90 orientation add def} if
/scaling 72 resolution div def
linewidth setlinewidth
1 setlinecap
pagedimensions
xcenter ycenter translate
orientation neg rotate
width 2 div neg height 2 div translate
xoffset inch yoffset inch translate
margin 2 div dup neg translate
magnification dup aspectratio mul scale
scaling scaling scale
/Symbol /S Sdefs cf
/Times-Roman /S1 S1defs cf
0 0 moveto
} def
/pagedimensions {
useclippath userdict /gotpagebbox known not and {
/pagebbox [clippath pathbbox newpath] def
roundpage currentdict /roundpagebbox known and {roundpagebbox} if
} if
pagebbox aload pop
4 -1 roll exch 4 1 roll 4 copy
landscape {4 2 roll} if
sub /width exch def
sub /height exch def
add 2 div /xcenter exch def
add 2 div /ycenter exch def
userdict /gotpagebbox true put
} def
/pagesetup {
/page exch def
currentdict /pagedict known currentdict page known and {
page load pagedict exch get cvx exec
} if
} def
/decodingdefs [
{counttomark 2 idiv {y moveto show} repeat}
{neg /y exch def counttomark 2 idiv {y moveto show} repeat}
{neg moveto {2 index stringwidth pop sub exch div 0 32 4 -1 roll widthshow} repeat}
{neg moveto {spacewidth sub 0.0 32 4 -1 roll widthshow} repeat}
{counttomark 2 idiv {y moveto show} repeat}
{neg setfunnytext}
] def
/setdecoding {/t decodingdefs 3 -1 roll get bind def} bind def
/w {neg moveto show} bind def
/m {neg dup /y exch def moveto} bind def
/done {/lastpage where {pop lastpage} if} def
/f {
dup /font exch def findfont exch
dup /ptsize exch def scaling div dup /size exch def scalefont setfont
linewidth ptsize mul scaling 10 mul div setlinewidth
/spacewidth ( ) stringwidth pop def
} bind def
/changefont {
/fontheight exch def
/fontslant exch def
currentfont [
1 0
fontheight ptsize div fontslant sin mul fontslant cos div
fontheight ptsize div
0 0
] makefont setfont
} bind def
/sf {f} bind def
/cf {
dup length 2 idiv
/entries exch def
/chtab exch def
/newfont exch def
findfont dup length 1 add dict
/newdict exch def
{1 index /FID ne {newdict 3 1 roll put} {pop pop} ifelse} forall
newdict /Metrics entries dict put
newdict /Metrics get
begin
chtab aload pop
1 1 entries {pop def} for
newfont newdict definefont pop
end
} bind def
%
% A few arrays used to adjust reference points and character widths in some
% of the printer resident fonts. If square roots are too high try changing
% the lines describing /radical and /radicalex to,
%
% /radical [0 -75 550 0]
% /radicalex [-50 -75 500 0]
%
/Sdefs [
/bracketlefttp [220 500]
/bracketleftbt [220 500]
/bracketrighttp [-70 380]
/bracketrightbt [-70 380]
/braceleftbt [220 490]
/bracketrightex [220 -125 500 0]
/radical [0 0 550 0]
% NeWSprint's \(br is too low, compensate
statusdict /product get (NeWS Server) eq {
/radicalex [-50 100 500 0]
/parenleftex [-20 100 0 0]
} {
/radicalex [-50 0 500 0]
/parenleftex [-20 -170 0 0]
} ifelse
/integral [100 -50 500 0]
/infinity [10 -75 730 0]
] def
/S1defs [
/underscore [0 80 500 0]
/endash [7 90 650 0]
] def
%%EndProlog
%%BeginSetup
mark
/resolution 720 def
setup
2 setdecoding
%%EndSetup
%%Page: 1 1
save
mark
1 pagesetup
36 B f
(sun)753 840 w
9 H f
(microsystems)933 920 w
14 R f
(Systems Architecture Committee)2 1881 1 3113 920 t
10 S1 f
(_ _____________________________________________________________________________________________)1 4680 1 720 1000 t
(_ _____________________________________________________________________________________________)1 4680 1 720 1010 t
10 B f
(Subject:)720 1476 w
10 R f
(PowerPC Header Files)2 926 1 1470 1476 t
10 B f
(Submitted by:)1 617 1 720 1632 t
10 R f
(Bill Taylor)1 450 1 1470 1632 t
10 B f
(File:)720 1788 w
10 R f
(psarc/1994/196/opinion.ms)1470 1788 w
10 B f
(Date:)720 1944 w
10 R f
(July 5th, 1995.)2 611 1 1470 1944 t
10 B f
(Committee:)720 2100 w
10 R f
( Steve Chessin, Mark Kampe, Terrence Miller, Bill Shannon, Glenn)9 2851(Joseph Kowalski,)1 719 2 1470 2100 t
( Robinson.)1 442(Skinner. Abstensions: David)2 1229 2 1470 2220 t
10 B f
(1. Summary)1 563 1 720 2460 t
10 R f
( to common, instruction set independent header)6 2009(This proposal establishes the modi\256cations to be made)7 2311 2 720 2616 t
(\256les to support PowerPC.)3 1047 1 720 2736 t
10 B f
( & Precedence Information)3 1185(2. Decision)1 502 2 720 2976 t
10 R f
(The proposal is accepted.)3 1038 1 720 3132 t
(The classi\256cation is minor.)3 1107 1 720 3288 t
( a micro change to the)5 979(A true port to a new instruction set architecture would be expected to produce)13 3341 2 720 3444 t
( a superior port.)3 656( this case, the project team decided to enhance the system in order to produce)14 3211(system. In)1 453 3 720 3564 t
(It would have been possible to de\256ne this project such as to qualify for a micro classi\256cation.)16 3854 1 720 3684 t
( the larger ``Solaris for PowerPC'' project, which was broken into subprojects to)12 3333(This project is subset of)4 987 2 720 3840 t
( of the subprojects must be delivered simultaneously.)7 2182( All)1 194(aid the review process.)3 938 3 720 3960 t
( ABI)1 205(PSARC/1993/685 PowerPC)1 1252 2 970 4140 t
( Kernel for PowerPC)3 864(PSARC/1994/188 Solaris)1 1152 2 970 4260 t
( Headers)1 359(PSARC/1994/196 PowerPC)1 1252 2 970 4380 t
( Commands)1 489(PSARC/1994/197 PowerPC)1 1252 2 970 4500 t
( System Libraries)2 721(PSARC/1994/198 PowerPC)1 1252 2 970 4620 t
( Booting)1 356(PSARC/1994/302 PowerPC)1 1252 2 970 4740 t
10 B f
(3. Opinion)1 493 1 720 5040 t
10 R f
( determined that most of the interesting)6 1643(Although this case started out as complex and interesting, it was)10 2677 2 720 5196 t
( associated with the implementation of)5 1591( controversial issues)2 830( The)1 223(bits were better attributed to other cases.)6 1676 4 720 5316 t
(varargs\(5\) were assigned to PSARC/1993/685,)4 1905 1 720 5436 t
10 S1 f
(")2658 5436 w
10 R f
(PowerPC ABI)1 584 1 2699 5436 t
10 S1 f
(")3283 5436 w
10 R f
(although the implementation is visible in)5 1682 1 3358 5436 t
( similar decision was made with respect to the value of)10 2271( A)1 138(the headers.)1 484 3 720 5556 t
10 S f
(_)3646 5556 w
10 R f
(NFILES.)3696 5556 w
10 B f
( Flags)1 261(3.1. Global)1 506 2 720 5796 t
10 R f
(PSARC/1993/444, ``Add isa)2 1164 1 720 5952 t
10 S f
(_)1884 5952 w
10 R f
(defs.h'', approves a policy of ``say what you mean'' for conditional compi-)11 3106 1 1934 5952 t
( endianness of the platform, the conditional should be based on)10 2672( the code is dependent on the)6 1255(lation. If)1 393 3 720 6072 t
( case is incomplete because it)5 1258( That)1 257( instruction set architectures.)3 1196(that, not on a disjunction of supported)6 1609 4 720 6192 t
( to specify a commitment level)5 1275( case clari\256es PSARC/1993/444)3 1313( This)1 245(doesn't specify a commitment level.)4 1487 4 720 6312 t
(of Public for both the name)5 1166 1 720 6432 t
10 S1 f
(<)1926 6432 w
10 R f
(sys/isa)1982 6432 w
10 S f
(_)2249 6432 w
10 R f
(defs.h)2299 6432 w
10 S1 f
(>)2540 6432 w
10 R f
( reference [3])2 565( See)1 217(and feature test macros de\256ned within.)5 1622 3 2636 6432 t
(for more details.)2 673 1 720 6552 t
( to PowerPC has uncovered additional feature test macros that should be de\256ned in)13 3523(The port of Solaris)3 797 2 720 6708 t
10 S1 f
(<)720 6828 w
10 R f
(sys/isa)776 6828 w
10 S f
(_)1043 6828 w
10 R f
(defs.h)1093 6828 w
10 S1 f
(>)1334 6828 w
10 R f
( additional macros and de\256nitions which re\257ect processor characteristics are:)9 3146(. The)1 246 2 1390 6828 t
10 S f
(_)970 6984 w
10 R f
(CHAR)1020 6984 w
10 S f
(_)1298 6984 w
10 R f
(ALIGNMENT)1348 6984 w
10 S f
(_)970 7140 w
10 R f
(SHORT)1020 7140 w
10 S f
(_)1348 7140 w
10 R f
(ALIGNMENT)1398 7140 w
10 I f
( Proprietary Information)2 1016(psarc/1994/196 Sun)1 3304 2 720 7680 t
cleartomark
showpage
restore
%%EndPage: 1 1
%%Page: 2 2
save
mark
2 pagesetup
10 R f
(- 2 -)2 182 1 2789 480 t
10 S f
(_)970 840 w
10 R f
(INT)1020 840 w
10 S f
(_)1186 840 w
10 R f
(ALIGNMENT)1236 840 w
10 S f
(_)970 996 w
10 R f
(LONG)1020 996 w
10 S f
(_)1297 996 w
10 R f
(ALIGNMENT)1347 996 w
10 S f
(_)970 1152 w
10 R f
(LONG)1020 1152 w
10 S f
(_)1297 1152 w
10 R f
(LONG)1347 1152 w
10 S f
(_)1624 1152 w
10 R f
(ALIGNMENT)1674 1152 w
10 S f
(_)970 1308 w
10 R f
(DOUBLE)1020 1308 w
10 S f
(_)1425 1308 w
10 R f
(ALIGNMENT)1475 1308 w
10 S f
(_)970 1464 w
10 R f
(LONG)1020 1464 w
10 S f
(_)1297 1464 w
10 R f
(DOUBLE)1347 1464 w
10 S f
(_)1752 1464 w
10 R f
(ALIGNMENT)1802 1464 w
10 S f
(_)970 1620 w
10 R f
(POINTER)1020 1620 w
10 S f
(_)1442 1620 w
10 R f
(ALIGNMENT:)1492 1620 w
( if not)2 261( Some,)1 322( the primitive object types.)4 1113(The ABI de\256nes alignment requirements of each of)7 2124 4 1220 1740 t
( are expressed in)3 724( values)1 300( The)1 233(all, may be hardware requirements as well.)6 1832 4 1220 1860 t
10 S1 f
(")4353 1860 w
10 R f
(byte-alignment)4394 1860 w
10 S1 f
(")4999 1860 w
10 R f
(units.)1220 1980 w
10 S f
(_)970 2136 w
10 R f
(MAX)1020 2136 w
10 S f
(_)1253 2136 w
10 R f
(ALIGNMENT:)1303 2136 w
( the maximum)2 608( to)1 117( Equal)1 305(The most stringent alignment requirement as speci\256ed by the ABI.)9 2790 4 1220 2256 t
(of all the above)3 642 1 1220 2376 t
10 S f
(_)1895 2376 w
10 R f
(XXX)1945 2376 w
10 S f
(_)2161 2376 w
10 R f
(ALIGNMENT values.)1 906 1 2211 2376 t
10 S f
(_)970 2532 w
10 R f
(ALIGNMENT)1020 2532 w
10 S f
(_)1613 2532 w
10 R f
(REQ)1663 2532 w
(How absolute are the alignment requirements.)5 1881 1 1220 2652 t
10 S f
(_)1220 2808 w
10 R f
(ALIGNMENT)1270 2808 w
10 S f
(_)1863 2808 w
10 R f
(REQ:)1913 2808 w
(This \257ag indicates that the hardware requires the ABI alignment.)9 2662 1 1470 2928 t
10 S f
(_)1220 3084 w
10 R f
(ALIGNMENT)1270 3084 w
10 S f
(_)1863 3084 w
10 R f
(OPT:)1913 3084 w
( Perfor-)1 367( not require the ABI alignment.)5 1389(This \257ag indicates that the hardware does)6 1814 3 1470 3204 t
(mance penalty is not considered.)4 1338 1 1470 3324 t
10 S f
(_)970 3480 w
10 R f
(FIRMWARE)1020 3480 w
10 S f
(_)1559 3480 w
10 R f
(NEEDS)1609 3480 w
10 S f
(_)1931 3480 w
10 R f
(FDISK)1981 3480 w
(This indicates the presence/absence of an fdisk table.)7 2173 1 1220 3600 t
10 S f
(_)1220 3756 w
10 R f
(FIRMWARE)1270 3756 w
10 S f
(_)1809 3756 w
10 R f
(NEEDS)1859 3756 w
10 S f
(_)2181 3756 w
10 R f
(FDISK)2231 3756 w
( present, it allows a disk to be sub-)8 1473( If)1 135( table is required by system \256rmware.)6 1572(The fdisk)1 390 4 1470 3876 t
( to a separate, virtual)4 870(divided into multiple fdisk partitions, each of which is equivalent)9 2700 2 1470 3996 t
( on a shared hard)4 769( enables the co-existence of multiple operating systems)7 2352(disk. This)1 449 3 1470 4116 t
(disk.)1470 4236 w
10 S f
(_)1220 4392 w
10 R f
(NO)1270 4392 w
10 S f
(_)1414 4392 w
10 R f
(FDISK)1464 4392 w
10 S f
(_)1753 4392 w
10 R f
(PRESENT)1803 4392 w
( assumed that the entire media is allocated for a single)10 2273(If the fdisk table is absent, it is)7 1297 2 1470 4512 t
(operating system.)1 713 1 1470 4632 t
10 B f
( Arguments)1 510(3.2. Variable)1 588 2 720 4872 t
10 R f
( the majority of the interface changes)6 1557(The PowerPC ABI speci\256es the argument passing conventions and)8 2763 2 720 5028 t
( discussions were)2 721( Those)1 313(required to support variable arguments are discussed and approved in that case.)11 3286 3 720 5148 t
( case, nor should they)4 924( pair of related interfaces were not discussed in that)9 2170( A)1 143(extensive and contentious.)2 1083 4 720 5268 t
( references [1], [2] and [4] for more details.)8 1796( See)1 210( are approved by this case.)5 1098( They)1 271(have been.)1 434 5 720 5388 t
10 B f
(3.2.1. va)1 391 1 720 5628 t
10 S f
(_)1111 5628 w
10 B f
(copy\(\))1161 5628 w
10 R f
( as)1 125(For most current processors and argument passing conventions, a simple pointer to memory is used)14 4195 2 720 5784 t
(the underlying type of a va)5 1178 1 720 5904 t
10 S f
(_)1898 5904 w
10 R f
( \(of size one\) of a structure to implement a)9 1879( uses an array)3 608(list. PowerPC)1 605 3 1948 5904 t
(va)720 6024 w
10 S f
(_)814 6024 w
10 R f
( does this because the argument passing convention, which passes \257oating point arguments in)13 3897(list. It)1 279 2 864 6024 t
( causes)1 299( This)1 251(\257oating point registers, requires multiple pointers to transverse the argument list \(see [2]\).)12 3770 3 720 6144 t
( this is done)3 514( Currently,)1 477( in an argument list.)4 841(dif\256culties with applications that wish to ``save their place'')8 2488 4 720 6264 t
(in the non-portable way of simply assigning one instance of a va)11 2753 1 720 6384 t
10 S f
(_)3473 6384 w
10 R f
(list to another which assumes that a)6 1517 1 3523 6384 t
(va)720 6504 w
10 S f
(_)814 6504 w
10 R f
( a macro be de\256ned to provide)6 1286( project proposes that)3 890( This)1 247(list is a assignable type, such as a pointer.)8 1753 4 864 6504 t
( does not address the)4 908( This)1 255( of ``saving your place'' across Solaris implementations.)7 2396(a portable method)2 761 4 720 6624 t
(problem of source portable across other operating systems.)7 2407 1 720 6744 t
(The macro va)2 564 1 720 6900 t
10 S f
(_)1284 6900 w
10 R f
(copy has the following de\256nition:)4 1382 1 1334 6900 t
(va)720 7056 w
10 S f
(_)814 7056 w
10 R f
(copy\(va)864 7056 w
10 S f
(_)1185 7056 w
10 R f
(list dest, va)2 469 1 1235 7056 t
10 S f
(_)1704 7056 w
10 R f
(list src\))1 305 1 1754 7056 t
(The va)1 284 1 970 7176 t
10 S f
(_)1254 7176 w
10 R f
( the va)2 288(copy\(\) macro saves the state represented by)6 1799 2 1304 7176 t
10 S f
(_)3391 7176 w
10 R f
(list src in the va)4 677 1 3441 7176 t
10 S f
(_)4118 7176 w
10 R f
( va)1 130( The)1 224(list dest.)1 345 3 4168 7176 t
10 S f
(_)4867 7176 w
10 R f
(list)4917 7176 w
( not be initialized by a previous call to va)9 1849(passed as dest should)3 921 2 970 7296 t
10 S f
(_)3740 7296 w
10 R f
(start\(\) and must be passed to)5 1250 1 3790 7296 t
10 I f
( Proprietary Information)2 1016(psarc/1994/196 Sun)1 3304 2 720 7680 t
cleartomark
showpage
restore
%%EndPage: 2 2
%%Page: 3 3
save
mark
3 pagesetup
10 R f
(- 3 -)2 182 1 2789 480 t
(va)970 840 w
10 S f
(_)1064 840 w
10 R f
(end\(\) before being reused as a parameter to va)8 1931 1 1114 840 t
10 S f
(_)3045 840 w
10 R f
( subsequent)1 481(start\(\) or as the dest parameter of a)7 1464 2 3095 840 t
(call to va)2 382 1 970 960 t
10 S f
(_)1352 960 w
10 R f
( behavior is unde\256ned should any of the restrictions above not be met.)12 2901(copy. The)1 440 2 1402 960 t
(This macro will be implemented in)5 1452 1 720 1116 t
10 S1 f
(<)2207 1116 w
10 R f
(stdarg.h)2263 1116 w
10 S1 f
(>)2582 1116 w
10 R f
(,)2638 1116 w
10 S1 f
(<)2698 1116 w
10 R f
(varargs.h)2754 1116 w
10 S1 f
(>)3122 1116 w
10 R f
(and)3213 1116 w
10 S1 f
(<)3392 1116 w
10 R f
(sys/varargs.h)3448 1116 w
10 S1 f
(>)3972 1116 w
10 R f
( multiple \256les are)3 730(. \(The)1 282 2 4028 1116 t
( restricts the namespace in the \256rst)6 1435( that ANSI-C x3.159-1989)3 1096( Note)1 262(historic and not altered by this case.\))6 1527 4 720 1236 t
( \256les, so this macro will not be visible when ANSI-C, POSIX, or X/Open conformant com-)15 3812(two of these)2 508 2 720 1356 t
(pilations are speci\256ed.)2 912 1 720 1476 t
10 B f
(3.2.2.)720 1716 w
10 S f
(__)1011 1716 w
10 B f
(builtin)1111 1716 w
10 S f
(_)1396 1716 w
10 B f
(va)1446 1716 w
10 S f
(_)1546 1716 w
10 B f
(info)1596 1716 w
10 R f
( and compi-)2 495(PSARC/1993/138, ``Compiler Prede\256nes'', de\256nes Public interfaces between the ON headers)9 3825 2 720 1872 t
( symbols)1 376( These)1 313( allow special compiler processing for a well de\256ned set of symbols.)11 2922(lation systems to)2 709 4 720 1992 t
(are)720 2112 w
10 S f
(__)889 2112 w
10 R f
(builtin)989 2112 w
10 S f
(_)1251 2112 w
10 R f
(alloca,)1301 2112 w
10 S f
(__)1612 2112 w
10 R f
(builtin)1712 2112 w
10 S f
(_)1974 2112 w
10 R f
(va)2024 2112 w
10 S f
(_)2118 2112 w
10 R f
(alist, and)1 384 1 2168 2112 t
10 S f
(__)2600 2112 w
10 R f
(builtin)2700 2112 w
10 S f
(_)2962 2112 w
10 R f
(va)3012 2112 w
10 S f
(_)3106 2112 w
10 R f
(arg)3156 2112 w
10 S f
(_)3283 2112 w
10 R f
( by the feature test)4 833(incr and are enabled)3 874 2 3333 2112 t
(macro)720 2232 w
10 S f
(__)1002 2232 w
10 R f
(BUILTIN)1102 2232 w
10 S f
(_)1501 2232 w
10 R f
(VA)1551 2232 w
10 S f
(_)1695 2232 w
10 R f
(ARG)1745 2232 w
10 S f
(_)1956 2232 w
10 R f
( reference 3 for more details.)5 1191(INCR. See)1 474 2 2006 2232 t
(Using the same feature test macro,)5 1525 1 720 2388 t
10 S f
(__)2299 2388 w
10 R f
(BUILTIN)2399 2388 w
10 S f
(_)2798 2388 w
10 R f
(VA)2848 2388 w
10 S f
(_)2992 2388 w
10 R f
(ARG)3042 2388 w
10 S f
(_)3253 2388 w
10 R f
(INCR, PowerPC does not use or de\256ne)6 1737 1 3303 2388 t
10 S f
(_)720 2508 w
10 R f
(builtin)770 2508 w
10 S f
(_)1032 2508 w
10 R f
(va)1082 2508 w
10 S f
(_)1176 2508 w
10 R f
(alist or)1 296 1 1226 2508 t
10 S f
(__)1568 2508 w
10 R f
(builtin)1668 2508 w
10 S f
(_)1930 2508 w
10 R f
(va)1980 2508 w
10 S f
(_)2074 2508 w
10 R f
(arg)2124 2508 w
10 S f
(_)2251 2508 w
10 R f
( additionally de\256nes)2 851(incr and)1 345 2 2301 2508 t
10 S f
(__)3542 2508 w
10 R f
(builtin)3642 2508 w
10 S f
(_)3904 2508 w
10 R f
(va)3954 2508 w
10 S f
(_)4048 2508 w
10 R f
( compilation)1 523(info. The)1 419 2 4098 2508 t
(system is able to generate code to initialize the va)9 2055 1 720 2628 t
10 S f
(_)2775 2628 w
10 R f
(list structure when recognizing this symbol.)5 1789 1 2825 2628 t
( formerly ISA independent)3 1169( The)1 245( this case and de\256nition alters/expands PSARC/1993/138.)6 2506(Note that)1 400 4 720 2784 t
( now)1 215( These)1 314( case de\256ned the set of reserved words.)7 1688( original)1 355( The)1 232(speci\256cation is now ISA dependent.)4 1516 6 720 2904 t
( case alters that set for PowerPC.)6 1365( This)1 244(apply only to SPARC and x86.)5 1280 3 720 3024 t
10 B f
( Layout Issues)2 628(3.3. Disk)1 411 2 720 3264 t
10 R f
( to header \256les, disk layout issues \(``fdisk'' partitions, VTOC format\) were)11 3130(Although not directly related)3 1190 2 720 3420 t
(raised during the discussion of this case and are addressed by this case.)12 2932 1 720 3540 t
( partitioning)1 524(The industry standard speci\256cations \(PREP/CHRP\) specify the use of an ``fdisk'' disk)11 3796 2 720 3696 t
( intent of this is to support multiple)7 1536( The)1 231( facto standard on the Intel based platforms.)7 1878(scheme as is de)3 675 4 720 3816 t
( support of Virtual Open Firmware and legacy PROMS means that)10 2889( Unfortunately,)1 665(operating systems.)1 766 3 720 3936 t
( that the NT)3 507( project team informed the ARC)5 1340( The)1 223(Solaris consumes three of the four available partitions.)7 2250 4 720 4056 t
( The)1 226( OS intent of the ``fdisk'' partitioning.)6 1613(port has the same property effectively negating the multiple)8 2481 3 720 4176 t
( ARC was unsatis\256ed that there was no)7 1680( The)1 229(ARC saw no alternative to the use of ``fdisk'' partitions.)9 2411 3 720 4296 t
(absolute alternative to consuming three of the four partitions, but approved this usage.)12 3536 1 720 4416 t
( signi\256cant differences between the SPARC and x86 VTOC \(Volume Table of Con-)12 3518(Currently, there are)2 802 2 720 4572 t
( that the SPARC VTOC only supports 8 slices while the x86 version)12 2847( signi\256cant difference is)3 992(tents\). One)1 481 3 720 4692 t
( sector support)2 638( disparity was justi\256ed by the assertion that x86 boot and alternate)11 2909( This)1 260(supports 16.)1 513 4 720 4812 t
( this turned out)3 627( the case of alternate sectors,)5 1191( In)1 150(requires additional partitions \(leaving fewer for the user\).)7 2352 4 720 4932 t
( there have been user requests for)6 1418( However,)1 462( a requirement.)2 629(to be an implementation choice, rather than)6 1811 4 720 5052 t
(supporting a larger number of slices.)5 1504 1 720 5172 t
( was some disagreement if this)5 1339( There)1 312(The ARC expressed the desire for an architecture for VTOCs.)9 2669 3 720 5328 t
( was)1 192(meant clear de\256nitions of big-endian and little-endian versions or if a more elaborate, XDR VTOC)14 4128 2 720 5448 t
( the PPC)2 369( ARC did not believe that resolving this issue was the responsibility of)12 2918( The)1 221(the correct solution.)2 812 4 720 5568 t
( the VTOC on a little-endian port of Solaris)8 1807(Project Team and allowed the use of the current x86 form of)11 2513 2 720 5688 t
( does not set a precedent for future ports.)8 1696( This)1 244(to PowerPC.)1 514 3 720 5808 t
10 B f
( Table)1 278(3.4. Interface)1 603 2 720 6048 t
10 S f
(_ __________________________________________________________________________________)1 4111 1 720 6164 t
10 R f
(Interfaces Exported)1 791 1 2380 6284 t
10 S f
(_ __________________________________________________________________________________)1 4111 1 720 6304 t
10 R f
( Comments)1 589(Interface Classi\256cation)1 2120 2 770 6424 t
10 S f
( \347)1 -4111(_ __________________________________________________________________________________)1 4111 2 720 6444 t
(\347)720 6364 w
(\347)720 6264 w
(\347)2270 6444 w
(\347)2270 6404 w
(\347)2970 6444 w
(\347)2970 6404 w
(\347)4831 6444 w
(\347)4831 6364 w
(\347)4831 6264 w
10 S1 f
(<)770 6564 w
10 R f
(sys/isa)826 6564 w
10 S f
(_)1093 6564 w
10 R f
(defs.h)1143 6564 w
10 S1 f
(>)1384 6564 w
10 R f
( name)1 249(Public File)1 856 2 2345 6564 t
10 S f
(_)770 6684 w
10 R f
(CHAR)820 6684 w
10 S f
(_)1098 6684 w
10 R f
( test macro \(see PSARC/1993/444\))4 1437( Feature)1 743(ALIGNMENT Public)1 1453 3 1148 6684 t
10 S f
(_)770 6804 w
10 R f
(SHORT)820 6804 w
10 S f
(_)1148 6804 w
10 R f
( test macro \(see PSARC/1993/444\))4 1437( Feature)1 743(ALIGNMENT Public)1 1403 3 1198 6804 t
10 S f
(_)770 6924 w
10 R f
(INT)820 6924 w
10 S f
(_)986 6924 w
10 R f
( test macro \(see PSARC/1993/444\))4 1437( Feature)1 743(ALIGNMENT Public)1 1565 3 1036 6924 t
10 S f
(_)770 7044 w
10 R f
(LONG)820 7044 w
10 S f
(_)1097 7044 w
10 R f
( test macro \(see PSARC/1993/444\))4 1437( Feature)1 743(ALIGNMENT Public)1 1454 3 1147 7044 t
10 S f
(_)770 7164 w
10 R f
(LONG)820 7164 w
10 S f
(_)1097 7164 w
10 R f
(LONG)1147 7164 w
10 S f
(_)1424 7164 w
10 R f
( test macro \(see PSARC/1993/444\))4 1437( Feature)1 743(ALIGNMENT Public)1 1127 3 1474 7164 t
10 S f
(_)770 7284 w
10 R f
(DOUBLE)820 7284 w
10 S f
(_)1225 7284 w
10 R f
( test macro \(see PSARC/1993/444\))4 1437( Feature)1 743(ALIGNMENT Public)1 1326 3 1275 7284 t
10 S f
( \347)1 -4111(_ __________________________________________________________________________________)1 4111 2 720 7304 t
(\347)720 7244 w
(\347)720 7144 w
(\347)720 7044 w
(\347)720 6944 w
(\347)720 6844 w
(\347)720 6744 w
(\347)720 6644 w
(\347)720 6544 w
(\347)2270 7304 w
(\347)2270 7264 w
(\347)2270 7164 w
(\347)2270 7064 w
(\347)2270 6964 w
(\347)2270 6864 w
(\347)2270 6764 w
(\347)2270 6664 w
(\347)2270 6564 w
(\347)2970 7304 w
(\347)2970 7264 w
(\347)2970 7164 w
(\347)2970 7064 w
(\347)2970 6964 w
(\347)2970 6864 w
(\347)2970 6764 w
(\347)2970 6664 w
(\347)2970 6564 w
(\347)4831 7304 w
(\347)4831 7244 w
(\347)4831 7144 w
(\347)4831 7044 w
(\347)4831 6944 w
(\347)4831 6844 w
(\347)4831 6744 w
(\347)4831 6644 w
(\347)4831 6544 w
10 I f
( Proprietary Information)2 1016(psarc/1994/196 Sun)1 3304 2 720 7680 t
cleartomark
showpage
restore
%%EndPage: 3 3
%%Page: 4 4
save
mark
4 pagesetup
10 R f
(- 4 -)2 182 1 2789 480 t
10 S f
(_ __________________________________________________________________________________)1 4111 1 720 740 t
10 R f
(Interfaces Exported)1 791 1 2380 860 t
10 S f
(_ __________________________________________________________________________________)1 4111 1 720 880 t
10 R f
( Comments)1 589(Interface Classi\256cation)1 2120 2 770 1000 t
10 S f
( \347)1 -4111(_ __________________________________________________________________________________)1 4111 2 720 1020 t
(\347)720 940 w
(\347)720 840 w
(\347)2270 1020 w
(\347)2270 980 w
(\347)2970 1020 w
(\347)2970 980 w
(\347)4831 1020 w
(\347)4831 940 w
(\347)4831 840 w
(_)770 1140 w
10 R f
(LONG)820 1140 w
10 S f
(_)1097 1140 w
10 R f
(DOUBLE)1147 1140 w
10 S f
(_)1552 1140 w
10 R f
( test macro \(see PSARC/1993/444\))4 1437( Feature)1 743(ALIGNMENT Public)1 999 3 1602 1140 t
10 S f
(_)770 1260 w
10 R f
(POINTER)820 1260 w
10 S f
(_)1242 1260 w
10 R f
( test macro \(see PSARC/1993/444\))4 1437( Feature)1 743(ALIGNMENT Public)1 1309 3 1292 1260 t
10 S f
(_)770 1380 w
10 R f
(MAX)820 1380 w
10 S f
(_)1053 1380 w
10 R f
( test macro \(see PSARC/1993/444\))4 1437( Feature)1 743(ALIGNMENT Public)1 1498 3 1103 1380 t
10 S f
(_)770 1500 w
10 R f
(ALIGNMENT)820 1500 w
10 S f
(_)1413 1500 w
10 R f
( test macro \(see PSARC/1993/444\))4 1437( Feature)1 743(REQ Public)1 1138 3 1463 1500 t
10 S f
(_)770 1620 w
10 R f
(ALIGNMENT)820 1620 w
10 S f
(_)1413 1620 w
10 R f
( test macro \(see PSARC/1993/444\))4 1437( Feature)1 743(OPT Public)1 1138 3 1463 1620 t
10 S f
(_)770 1740 w
10 R f
(FIRMWARE)820 1740 w
10 S f
(_)1359 1740 w
10 R f
(NEEDS)1409 1740 w
10 S f
(_)1731 1740 w
10 R f
( test macro \(see PSARC/1993/444\))4 1437( Feature)1 743(FDISK Public)1 820 3 1781 1740 t
10 S f
(_)770 1860 w
10 R f
(NO)820 1860 w
10 S f
(_)964 1860 w
10 R f
(FDISK)1014 1860 w
10 S f
(_)1303 1860 w
10 R f
( test macro \(see PSARC/1993/444\))4 1437( Feature)1 743(PRESENT Public)1 1248 3 1353 1860 t
(va)770 1980 w
10 S f
(_)864 1980 w
10 R f
( varargs macro)2 608( Additional)1 872(copy\(\) Public)1 1687 3 914 1980 t
10 S f
(__)770 2100 w
10 R f
(builtin)870 2100 w
10 S f
(_)1132 2100 w
10 R f
(va)1182 2100 w
10 S f
(_)1276 2100 w
10 R f
( PSARC/1992/138)1 757( See)1 588(info\(\) Public)1 1275 3 1326 2100 t
10 S1 f
(<)770 2220 w
10 R f
(sys/va)826 2220 w
10 S f
(_)1076 2220 w
10 R f
(list.h)1126 2220 w
10 S1 f
(>)1324 2220 w
10 R f
( name)1 249(Uncommitted File)1 856 2 2345 2220 t
( Solaris PPC partition)3 895( Identi\256es)1 816( Public)1 844(Solaris FDISK ID \(130\))3 987 4 770 2340 t
10 S f
( \347)1 -4111(_ __________________________________________________________________________________)1 4111 2 720 2360 t
(\347)720 2320 w
(\347)720 2220 w
(\347)720 2120 w
(\347)720 2020 w
(\347)720 1920 w
(\347)720 1820 w
(\347)720 1720 w
(\347)720 1620 w
(\347)720 1520 w
(\347)720 1420 w
(\347)720 1320 w
(\347)720 1220 w
(\347)720 1120 w
(\347)2270 2360 w
(\347)2270 2340 w
(\347)2270 2240 w
(\347)2270 2140 w
(\347)2270 2040 w
(\347)2270 1940 w
(\347)2270 1840 w
(\347)2270 1740 w
(\347)2270 1640 w
(\347)2270 1540 w
(\347)2270 1440 w
(\347)2270 1340 w
(\347)2270 1240 w
(\347)2270 1140 w
(\347)2970 2360 w
(\347)2970 2340 w
(\347)2970 2240 w
(\347)2970 2140 w
(\347)2970 2040 w
(\347)2970 1940 w
(\347)2970 1840 w
(\347)2970 1740 w
(\347)2970 1640 w
(\347)2970 1540 w
(\347)2970 1440 w
(\347)2970 1340 w
(\347)2970 1240 w
(\347)2970 1140 w
(\347)4831 2360 w
(\347)4831 2320 w
(\347)4831 2220 w
(\347)4831 2120 w
(\347)4831 2020 w
(\347)4831 1920 w
(\347)4831 1820 w
(\347)4831 1720 w
(\347)4831 1620 w
(\347)4831 1520 w
(\347)4831 1420 w
(\347)4831 1320 w
(\347)4831 1220 w
(\347)4831 1120 w
10 B f
( Opinion\(s\))1 490(4. Minority)1 524 2 720 2660 t
10 R f
(None.)720 2816 w
10 B f
( Information)1 555(5. Advisory)1 530 2 720 3056 t
10 R f
( one exception, the ARC)4 1065( With)1 278(This case touched upon the long unresolved issue of the cmdk driver.)11 2977 3 720 3248 t
( architecture without the)3 1009(expressed dismay that this implementation was ported to another instruction set)10 3311 2 720 3368 t
(review it should have had before originally being shipped as part of the ``Solaris for Intel'' product.)16 4320 1 720 3488 t
( of adding a dependency on that review to the ``Solaris on PowerPC'' was considered)14 3701(The possibility)1 619 2 720 3608 t
( dependency was not considered to be in)7 1721( such a)2 305( However,)1 462(\(actually expressed at the inception review\).)5 1832 4 720 3728 t
( following ``Advisory Informa-)3 1292( the weak alternative of the)5 1148( Instead,)1 384(the best interests of the corporation.)5 1496 4 720 3848 t
(tion'' was decided upon.)3 1011 1 720 3968 t
( devices should be ini-)4 967(A project to unify the disk driver architectures for SCSI and direct attach)12 3103 2 970 4124 t
(tiated.)970 4244 w
( into ways to restore the multiple OS support to the ``fdisk'')11 2720(Further investigation should be made)4 1600 2 720 4400 t
( may not be possible or practical until the industry direction is clearer.)12 2895(mechanism. This)1 724 2 720 4520 t
( is some disagreement if this means clear)7 1772( There)1 309( should be created.)3 805(A project to regularize the VTOC)5 1434 4 720 4676 t
( if a more elaborate, XDR VTOC is the correct)9 2062(de\256nitions of big-endian and little-endian versions or)6 2258 2 720 4796 t
( compatibility must be maintained.)4 1424(solution. Backwards)1 857 2 720 4916 t
10 B f
(6. Appendices)1 636 1 720 5156 t
( A: Technical Changes Required)4 1421(6.1. Appendix)1 634 2 720 5396 t
10 R f
( the sys)2 326( not reserve)2 489(1. Do)1 372 3 970 5588 t
10 S f
(_)2157 5588 w
10 R f
( the \256rst project which asserts a need for)8 1717( Allow)1 321(sysppc system call.)2 795 3 2207 5588 t
(it to de\256ne it.)3 558 1 1220 5708 t
10 B f
( B: Technical Changes Advised)4 1361(6.2. Appendix)1 634 2 720 5948 t
10 R f
(None.)720 6104 w
10 B f
( C: Reference Material)3 1000(6.3. Appendix)1 634 2 720 6344 t
10 R f
( PowerPC ABI, Steve Z.)4 1211(1. psarc/1993/685,)1 891 2 720 6536 t
( Interface, PowerPC Processor Supplement \(Draft\), Steve Z.,)7 2809( V Application Binary)3 966(2. System)1 545 3 720 6692 t
(SunSoft; K. K., IBM, March 1995)5 1619 1 970 6812 t
( Add isa)2 349(3. psarc/1993/444,)1 891 2 720 6968 t
10 S f
(_)1960 6968 w
10 R f
(defs.h, Joseph Kowalski)2 987 1 2010 6968 t
( Compiler Prede\256nes, Lee Bieber)4 1366(4. psarc/1993/138,)1 891 2 720 7124 t
10 I f
( Proprietary Information)2 1016(psarc/1994/196 Sun)1 3304 2 720 7680 t
cleartomark
showpage
restore
%%EndPage: 4 4
%%Page: 5 5
save
mark
5 pagesetup
10 R f
(- 5 -)2 182 1 2789 480 t
( \(This case\))2 481(5. psarc/1994/168/materials/issue4.varargs)1 1856 2 720 840 t
( x86 Disk Layout, Kevin S.)5 1289(6. psarc/1993/015,)1 891 2 720 996 t
10 I f
( Proprietary Information)2 1016(psarc/1994/196 Sun)1 3304 2 720 7680 t
cleartomark
showpage
restore
%%EndPage: 5 5
%%Trailer
done
%%DocumentFonts: Times-Bold Helvetica Times-Roman Symbol Times-Italic
%%Pages: 5
----------
X-Sun-Data-Type: default
X-Sun-Data-Description: default
X-Sun-Data-Name: opinion.ms
X-Sun-Charset: us-ascii
X-Sun-Content-Lines: 451
.\" @(#)opinion.template.ms 1.3 93/09/10
.\"
.\" This file is a troff -ms template for writing an architecture opinion. It
.\" includes a series of macros (../../amac) that provide some basic structure.
.\" Read the comments, and look for the lines bracketed by "**"'s that tell
.\" where your insertions go.
.\"
.\" We follow basically "man page" styles -- commands and function names in the
.\" text are in bold. Indented code references are in typewriter font ("L").
.\" Use ".UX" for references to "UNIX".
.\"
.\" To make a footnote, follow the sequence:
.\"
.\" blah blah blah blah.\** <- Invokes next footnote
.\" .nr MF 1 <- Sets up for hanging indent footnotes
.\" .FS <- Begins footnote
.\" .IP [\n*] <- Hanging indent of number in []'s
.\" blah blah blah <- Text of footnote
.\" .FE <- End of footnote
.\" blah blah blah <- Resume main text of document
.\"
.\" String definitions used below. Alter these as necessary for the
.\" case at hand. The first is the name of the ARC generating this opinion
.\" (all in lower case) and the second the case number (in the form 199x/nnn).
.\" ** Fill these in! **
.ds aR psarc
.ds cA 1994/196
.\"
.LP
.so ../../amac
.Co
.\"
.\" The left footer "LF" is set to be the file number. The number is formed
.\" as: arc-name/year/sequence number: e.g., psarc/1993/001. This is in
.\" italics, don't disturb the font switches. Unless you're using a
.\" nonstandard footer format, no change is necessary here.
.\"
.ds LF \fI\*(aR/\*(cA\fP
.ds RF \fICopyright 1994 Sun Microsystems, Inc.\fP
.if n .ds CF
.IP \fBSubject:\fP 15
.\"
.\" Put the name of the item being reviewed here.
.\"
PowerPC Header Files
.IP "\fBSubmitted by:\fP" 15
.\"
.\" Put the name of the person who led the submission here. Put "et al"
.\" if there's more than one.
.\"
Bill Taylor
.IP \fBFile:\fP 15
.\"
.\" The name of the file holding this text. The standard location is:
.\" "file number" "/" and "opinion.ms"; no alteration is necessary here
.\" unless you're using a different location.
.\"
\*(aR/\*(cA/opinion.ms
.IP \fBDate:\fP 15
.\"
.\" Put the date we reached the opinion being documented here. If it's
.\" being revised, include the original date and the last revision date
.\" as in: February 30th, 1991, Revised March 32nd, 1991. As a style
.\" matter, the "st", "nd", "rd", "th" suffixes to the date should be
.\" added as appropriate.
.\"
July 5th, 1995.
.IP "\fBCommittee:\fP" 15
.\"
.\" List the names of the committee who participated in the decision here.
.\" List the majority first, in alphabetical order. Except, place the name
.\" of the person writing the majority opinion first. List the minority
.\" second, after a "." and the word "Minority:". Again, place the name
.\" of the author of the minority opinion first, but then alphabetical.
.\" E.g.: Joe Blow, Allan Able, Charlie Carlson. Minority: George Wrong,
.\" Devils Advocate. List abstentions last.
.\"
.pn 2
Joseph Kowalski,
Steve Chessin,
Mark Kampe,
Terrence Miller,
Bill Shannon,
Glenn Skinner.
Abstensions:
David Robinson.
.NH
Summary
.LP
.\"
.\" In this section, put a few sentence synopsis of the proposal.
.\"
This proposal establishes the modifications to be made to common,
instruction set independent header files to support PowerPC.
.NH
Decision & Precedence Information
.LP
.\"
.\" In this section, state the following in this order. One sentence
.\" paragraphs are best.
.\"
.\" Whether or not the proposal is accepted. [If there are mandatory
.\" modifications that the acceptance is conditional upon, state that
.\" they are specified in Appendix A. If the proposal is accepted
.\" unconditionally, simply state that it's accepted.]
.\"
.\" The classification of the deliverable as a major [incompatible],
.\" minor [compatible enhancement], or micro [a "replicant" like a
.\" port or driver; or a bug fix.]
.\"
.\" The list of projects that must be delivered prior to this project.
.\" List this as:
.\"
.\" .RS
.\" .IP n <- "n" is database or file number of project
.\" Text of description
.\" .IP n <- more of these as required
.\" ...
.\" .RE
.\"
The proposal is accepted.
.LP
The classification is minor.
.LP
A true port to a new instruction set architecture would be expected to
produce a micro change to the system.
In this case, the project team decided to enhance the system in order
to produce a superior port.
It would have been possible to define this project such as to qualify
for a micro classification.
.LP
This project is subset of the larger ``Solaris for PowerPC''
project, which was broken into subprojects to aid the review process.
All of the subprojects must be delivered simultaneously.
.RS
.TS
l l.
PSARC/1993/685 PowerPC ABI
PSARC/1994/188 Solaris Kernel for PowerPC
PSARC/1994/196 PowerPC Headers
PSARC/1994/197 PowerPC Commands
PSARC/1994/198 PowerPC System Libraries
PSARC/1994/302 PowerPC Booting
.TE
.RE
.NH
Opinion
.LP
.\"
.\" Place the text of any opinion here. Note that if the decision is
.\" to reject that an opinion text is mandatory. The decision should,
.\" where possible and especially for a rejection, express the principles
.\" that underly the decision. If the application of the principle is
.\" limited or "special" for this case, be sure to identify that.
.\"
.\" This section should also identify the project's interfaces and
.\" their classifications in the interface taxonomy. A tabular format
.\" is frequently appropriate for this information. Tables should be
.\" formatted similarly to the following:
.\"
.\" .LP
.\" .TS H
.\" box;
.\" c s s
.\" l | l | l.
.\" Interfaces Exported
.\" _
.\" Interface Classification Comments
.\" _
.\" .TH
.\"
.\" .TE
.\"
Although this case started out as complex and interesting, it was determined
that most of the interesting bits were better attributed to other cases.
The controversial issues associated with the implementation of varargs(5)
were assigned to PSARC/1993/685, "PowerPC ABI" although the implementation
is visible in the headers. A similar decision was made with respect to the
value of _NFILES.
.NH 2
Global Flags
.LP
PSARC/1993/444, ``Add isa_defs.h'', approves a policy of ``say what you mean''
for conditional compilation. If the code is dependent on the endianness
of the platform, the conditional should be based on that, not on a disjunction
of supported instruction set architectures. That case is incomplete because
it doesn't specify a commitment level. This case clarifies PSARC/1993/444
to specify a commitment level of Public for both the name
and feature test macros defined within. See reference [3] for more details.
.LP
The port of Solaris to PowerPC has uncovered additional feature test macros
that should be defined in . The additional macros and
definitions which reflect processor characteristics are:
.RS
.IP _CHAR_ALIGNMENT
.IP _SHORT_ALIGNMENT
.IP _INT_ALIGNMENT
.IP _LONG_ALIGNMENT
.IP _LONG_LONG_ALIGNMENT
.IP _DOUBLE_ALIGNMENT
.IP _LONG_DOUBLE_ALIGNMENT
.IP _POINTER_ALIGNMENT:
The ABI defines alignment requirements of each of the primitive
object types. Some, if not all, may be hardware requirements as
well. The values are expressed in "byte-alignment" units.
.IP _MAX_ALIGNMENT:
The most stringent alignment requirement as specified by the ABI.
Equal to the maximum of all the above _XXX_ALIGNMENT values.
.IP _ALIGNMENT_REQ / _ALIGNMENT_OPT
How absolute are the alignment requirements.
.RS
.IP _ALIGNMENT_REQ:
This flag indicates that the hardware requires the ABI alignment.
.IP _ALIGNMENT_OPT:
This flag indicates that the hardware does not require
the ABI alignment. Performance penalty is not considered.
.RE
.IP _FIRMWARE_NEEDS_FDISK / _NO_FDISK_PRESENT
This indicates the presence/absence of an fdisk table.
.RS
.IP _FIRMWARE_NEEDS_FDISK
The fdisk table is required by system firmware.
If present, it allows a disk to be subdivided into multiple fdisk
partitions, each of which is equivalent to a separate, virtual disk.
This enables the co-existence of multiple operating systems on a
shared hard disk.
.IP _NO_FDISK_PRESENT
If the fdisk table is absent, it is assumed that the entire
media is allocated for a single operating system.
.RE
.RE
.NH 2
Variable Arguments
.LP
The PowerPC ABI specifies the argument passing conventions and the majority
of the interface changes required to support variable arguments are
discussed and approved in that case. Those discussions were extensive
and contentious. A pair of related interfaces were not discussed in
that case, nor should they have been. They are approved by this case.
See references [1], [2] and [4] for more details.
.NH 3
va_copy()
.LP
For most current processors and argument passing conventions, a simple
pointer to memory is used as the underlying type of a va_list.
PowerPC uses an array (of size one) of a structure to implement a va_list.
It does this because the argument passing convention, which passes floating
point arguments in floating point registers, requires multiple pointers to
transverse the argument list (see [2]).
This causes difficulties with applications that wish to ``save their place''
in an argument list. Currently, this is done in the non-portable way
of simply assigning one instance of a va_list to another which assumes
that a va_list is a assignable type, such as a pointer. This project
proposes that a macro be defined to provide a portable method of
``saving your place'' across Solaris implementations. This does not
address the problem of source portable across other operating systems.
.LP
The macro va_copy has the following definition:
.IP "va_copy(va_list dest, va_list src)"
The va_copy() macro saves the state represented by the va_list src in
the va_list dest. The va_list passed as dest should not be initialized
by a previous call to va_start() and must be passed to va_end() before
being reused as a parameter to va_start() or as the dest parameter of
a subsequent call to va_copy. The behavior is undefined should any of
the restrictions above not be met.
.LP
This macro will be implemented in , and .
(The multiple files are historic and not altered by this case.)
Note that ANSI-C x3.159-1989 restricts the namespace in the first two of
these files, so this macro will not be visible when ANSI-C, POSIX, or
X/Open conformant compilations are specified.
.NH 3
__builtin_va_info
.LP
PSARC/1993/138, ``Compiler Predefines'', defines Public interfaces between
the ON headers and compilation systems to allow special compiler processing
for a well defined set of symbols. These symbols are __builtin_alloca,
__builtin_va_alist, and __builtin_va_arg_incr and are enabled by the
feature test macro __BUILTIN_VA_ARG_INCR.
See reference 3 for more details.
.LP
Using the same feature test macro, __BUILTIN_VA_ARG_INCR, PowerPC does not
use or define _builtin_va_alist or __builtin_va_arg_incr and additionally
defines __builtin_va_info. The compilation system is able to generate
code to initialize the va_list structure when recognizing this symbol.
.LP
Note that this case and definition alters/expands PSARC/1993/138.
The formerly ISA independent specification is now ISA dependent.
The original case defined the set of reserved words. These now apply
only to SPARC and x86. This case alters that set for PowerPC.
.NH 2
Disk Layout Issues
.LP
Although not directly related to header files, disk layout issues
(``fdisk'' partitions, VTOC format) were raised during the discussion of
this case and are addressed by this case.
.LP
The industry standard specifications (PREP/CHRP) specify the use of an
``fdisk'' disk partitioning scheme as is de facto standard on the Intel
based platforms. The intent of this is to support multiple operating
systems. Unfortunately, support of Virtual Open Firmware and legacy
PROMS means that Solaris consumes three of the four available partitions.
The project team informed the ARC that the NT port has the same property
effectively negating the multiple OS intent of the ``fdisk'' partitioning.
The ARC saw no alternative to the use of ``fdisk'' partitions. The ARC
was unsatisfied that there was no absolute alternative to consuming
three of the four partitions, but approved this usage.
.LP
Currently, there are significant differences between the SPARC and x86
VTOC (Volume Table of Contents). One significant difference is that
the SPARC VTOC only supports 8 slices while the x86 version supports
16. This disparity was justified by the assertion that x86 boot and
alternate sector support requires additional partitions (leaving fewer
for the user). In the case of alternate sectors, this turned out to
be an implementation choice, rather than a requirement. However, there
have been user requests for supporting a larger number of slices.
.LP
The ARC expressed the desire for an architecture for VTOCs. There
was some disagreement if this meant clear definitions of big-endian
and little-endian versions or if a more elaborate, XDR VTOC was the
correct solution. The ARC did not believe that resolving this issue
was the responsibility of the PPC Project Team and allowed the use
of the current x86 form of the VTOC on a little-endian port of Solaris
to PowerPC. This does not set a precedent for future ports.
.ne 12
.NH 2
Interface Table
.LP
.TS H
box;
c s s
l | l | l.
Interfaces Exported
_
Interface Classification Comments
_
.TH
Public File name
_CHAR_ALIGNMENT Public Feature test macro (see PSARC/1993/444)
_SHORT_ALIGNMENT Public Feature test macro (see PSARC/1993/444)
_INT_ALIGNMENT Public Feature test macro (see PSARC/1993/444)
_LONG_ALIGNMENT Public Feature test macro (see PSARC/1993/444)
_LONG_LONG_ALIGNMENT Public Feature test macro (see PSARC/1993/444)
_DOUBLE_ALIGNMENT Public Feature test macro (see PSARC/1993/444)
_LONG_DOUBLE_ALIGNMENT Public Feature test macro (see PSARC/1993/444)
_POINTER_ALIGNMENT Public Feature test macro (see PSARC/1993/444)
_MAX_ALIGNMENT Public Feature test macro (see PSARC/1993/444)
_ALIGNMENT_REQ Public Feature test macro (see PSARC/1993/444)
_ALIGNMENT_OPT Public Feature test macro (see PSARC/1993/444)
_FIRMWARE_NEEDS_FDISK Public Feature test macro (see PSARC/1993/444)
_NO_FDISK_PRESENT Public Feature test macro (see PSARC/1993/444)
va_copy() Public Additional varargs macro
__builtin_va_info() Public See PSARC/1992/138
Uncommitted File name
Solaris FDISK ID (130) Public Identifies Solaris PPC partition
.TE
.NH
Minority Opinion(s)
.LP
.\"
.\" If there is a dissent, the text for the dissent goes here.
.\" If none, so state.
.\"
None.
.NH
Advisory Information
.LP
.\"
.\" If there is editorial, or advisory information the committee wishes
.\" to express, place that here. This is information that may be used
.\" by the project or management as they see fit. It could include
.\" observations about costs, techniques, suggestions for different
.\" design decisions, and the like.
.\"
.LP
This case touched upon the long unresolved issue of the cmdk driver.
With one exception, the ARC expressed dismay that this implementation
was ported to another instruction set architecture without the review
it should have had before originally being shipped as part of the
``Solaris for Intel'' product. The possibility of adding a dependency
on that review to the ``Solaris on PowerPC'' was considered (actually
expressed at the inception review). However, such a dependency was
not considered to be in the best interests of the corporation. Instead,
the weak alternative of the following ``Advisory Information'' was decided
upon.
.RS
.LP
A project to unify the disk driver architectures for SCSI and direct
attach devices should be initiated.
.RE
.LP
Further investigation should be made into ways to restore the multiple
OS support to the ``fdisk'' mechanism. This may not be possible or
practical until the industry direction is clearer.
.LP
A project to regularize the VTOC should be created.
There is some disagreement if this means clear definitions of big-endian
and little-endian versions or if a more elaborate, XDR VTOC is the
correct solution. Backwards compatibility must be maintained.
.NH
Appendices
.NH 2
Appendix A: Technical Changes Required
.LP
.\"
.\" If there are mandatory technical changes, enumerate them here.
.\" The formatting that works best is:
.\"
.\" .RS
.\" .IP 1.
.\" Text.
.\" .IP 2.
.\" Text.
.\" ...
.\" .RE
.\"
.\" If there are no mandatory changes, so state.
.\"
.RS
.IP 1.
Do not reserve the sys_sysppc system call. Allow the first project which
asserts a need for it to define it.
.RE
.NH 2
Appendix B: Technical Changes Advised
.LP
.\"
.\" As in Appendix A, list specific changes that the committee advises.
.\" If none, so state.
.\"
None.
.NH 2
Appendix C: Reference Material
.LP
.\"
.\" List reference material. This usually will include the submission
.\" material. Use the enumeration formatting described for Appendix A.
.\"
.IP 1.
psarc/1993/685, PowerPC ABI, Steve Z.
.IP 2.
System V Application Binary Interface, PowerPC Processor Supplement (Draft),
Steve Z., SunSoft; K. K., IBM, March 1995
.IP 3.
psarc/1993/444, Add isa_defs.h, Joseph Kowalski
.IP 4.
psarc/1993/138, Compiler Predefines, Lee Bieber
.IP 5.
psarc/1994/168/materials/issue4.varargs (This case)
.IP 6.
psarc/1993/015, x86 Disk Layout, Kevin S.
From jek3@jurassic Fri Aug 4 18:27:09 1995
Date: Fri, 4 Aug 1995 18:25:47 -0700
From: jek3@jurassic (Joseph Kowalski)
To: sac-review@sac
Subject: PSARC/1994/196
Cc: billt@West
Content-Length: 15023
For SAC review:
sun
microsystems Systems Architecture Committee
_________________________________________________________________
Subject: PowerPC Header Files
Submitted by: Bill Taylor
File: psarc/1994/196/opinion.ms
Date: July 5th, 1995.
Committee: Joseph Kowalski, Steve Chessin, Mark Kampe,
Terrence Miller, Bill Shannon, Glenn Skinner.
Abstensions: David Robinson.
1. Summary
This proposal establishes the modifications to be made to
common, instruction set independent header files to support
PowerPC.
2. Decision & Precedence Information
The proposal is accepted.
The project may be delivered in a minor release of Solaris.
A true port to a new instruction set architecture would be
expected to produce a micro change to the system. In this
case, the project team decided to enhance the system in
order to produce a superior port. It would have been possi-
ble to define this project such as to qualify for a micro
classification.
This project is subset of the larger ``Solaris for PowerPC''
project, which was broken into subprojects to aid the review
process. All of the subprojects must be delivered simul-
taneously.
PSARC/1993/685 PowerPC ABI
PSARC/1994/188 Solaris Kernel for PowerPC
PSARC/1994/196 PowerPC Headers
PSARC/1994/197 PowerPC Commands
PSARC/1994/198 PowerPC System Libraries
PSARC/1994/302 PowerPC Booting
3. Opinion
Although this case started out as complex and interesting,
it was determined that most of the interesting bits were
psarc/1994/196 Copyright 1995 Sun Microsystems, Inc.
- 2 -
better attributed to other cases. The controversial issues
associated with the implementation of varargs(5) were
assigned to PSARC/1993/685, "PowerPC ABI" although the
implementation is visible in the headers. A similar deci-
sion was made with respect to the value of _NFILES.
3.1. Global Flags
PSARC/1993/444, ``Add isa_defs.h'', approves a policy of
``say what you mean'' for conditional compilation. If the
code is dependent on the endianness of the platform, the
conditional should be based on that, not on a disjunction of
supported instruction set architectures. That case is
incomplete because it doesn't specify a commitment level.
This case clarifies PSARC/1993/444 to specify a commitment
level of Public for both the name and
feature test macros defined within. See reference [3] for
more details.
The port of Solaris to PowerPC has uncovered additional
feature test macros that should be defined in
. The additional macros and definitions
which reflect processor characteristics are:
_CHAR_ALIGNMENT
_SHORT_ALIGNMENT
_INT_ALIGNMENT
_LONG_ALIGNMENT
_LONG_LONG_ALIGNMENT
_DOUBLE_ALIGNMENT
_LONG_DOUBLE_ALIGNMENT
_POINTER_ALIGNMENT:
The ABI defines alignment requirements of each of
the primitive object types. Some, if not all, may
be hardware requirements as well. The values are
expressed in "byte-alignment" units.
_MAX_ALIGNMENT:
The most stringent alignment requirement as speci-
fied by the ABI. Equal to the maximum of all the
above _XXX_ALIGNMENT values.
_ALIGNMENT_REQ
How absolute are the alignment requirements.
_ALIGNMENT_REQ:
This flag indicates that the hardware
psarc/1994/196 Copyright 1995 Sun Microsystems, Inc.
- 3 -
requires the ABI alignment.
_ALIGNMENT_OPT:
This flag indicates that the hardware does
not require the ABI alignment. Performance
penalty is not considered.
_FIRMWARE_NEEDS_FDISK
This indicates the presence/absence of an fdisk
table.
_FIRMWARE_NEEDS_FDISK
The fdisk table is required by system
firmware. If present, it allows a disk to be
subdivided into multiple fdisk partitions,
each of which is equivalent to a separate,
virtual disk. This enables the co-existence
of multiple operating systems on a shared
hard disk.
_NO_FDISK_PRESENT
If the fdisk table is absent, it is assumed
that the entire media is allocated for a sin-
gle operating system.
3.2. Variable Arguments
The PowerPC ABI specifies the argument passing conventions
and the majority of the interface changes required to sup-
port variable arguments are discussed and approved in that
case. Those discussions were extensive and contentious. A
pair of related interfaces were not discussed in that case,
nor should they have been. They are approved by this case.
See references [1], [2] and [4] for more details.
3.2.1. va_copy()
For most current processors and argument passing conven-
tions, a simple pointer to memory is used as the underlying
type of a va_list. PowerPC uses an array (of size one) of a
structure to implement a va_list. It does this because the
argument passing convention, which passes floating point
arguments in floating point registers, requires multiple
pointers to transverse the argument list (see [2]). This
causes difficulties with applications that wish to ``save
their place'' in an argument list. Currently, this is done
in the non-portable way of simply assigning one instance of
a va_list to another which assumes that a va_list is a
assignable type, such as a pointer. This project proposes
that a macro be defined to provide a portable method of
``saving your place'' across Solaris implementations. This
does not address the problem of source portable across other
operating systems.
psarc/1994/196 Copyright 1995 Sun Microsystems, Inc.
- 4 -
The macro va_copy has the following definition:
va_copy(va_list dest, va_list src)
The va_copy() macro saves the state represented by the
va_list src in the va_list dest. The va_list passed as
dest should not be initialized by a previous call to
va_start() and must be passed to va_end() before being
reused as a parameter to va_start() or as the dest
parameter of a subsequent call to va_copy. The
behavior is undefined should any of the restrictions
above not be met.
This macro will be implemented in ,
and . (The multiple files are historic and
not altered by this case.) Note that ANSI-C x3.159-1989
restricts the namespace in the first two of these files, so
this macro will not be visible when ANSI-C, POSIX, or X/Open
conformant compilations are specified.
3.2.2. __builtin_va_info
PSARC/1993/138, ``Compiler Predefines'', defines Public
interfaces between the ON headers and compilation systems to
allow special compiler processing for a well defined set of
symbols. These symbols are __builtin_alloca,
__builtin_va_alist, and __builtin_va_arg_incr and are
enabled by the feature test macro __BUILTIN_VA_ARG_INCR.
See reference 3 for more details.
Using the same feature test macro, __BUILTIN_VA_ARG_INCR,
PowerPC does not use or define _builtin_va_alist or
__builtin_va_arg_incr and additionally defines
__builtin_va_info. The compilation system is able to gen-
erate code to initialize the va_list structure when recog-
nizing this symbol.
Note that this case and definition alters/expands
PSARC/1993/138. The formerly ISA independent specification
is now ISA dependent. The original case defined the set of
reserved words. These now apply only to SPARC and x86.
This case alters that set for PowerPC.
3.3. Disk Layout Issues
Although not directly related to header files, disk layout
issues (``fdisk'' partitions, VTOC format) were raised dur-
ing the discussion of this case and are addressed by this
case.
The industry standard specifications (PREP/CHRP) specify the
use of an ``fdisk'' disk partitioning scheme as is the de
facto standard on the Intel based platforms. The intent of
this is to support multiple operating systems. Unfor-
tunately, support of Virtual Open Firmware and legacy PROMS
psarc/1994/196 Copyright 1995 Sun Microsystems, Inc.
- 5 -
means that Solaris consumes three of the four available par-
titions. The project team informed the ARC that the NT port
has the same property effectively negating the multiple OS
intent of the ``fdisk'' partitioning. The ARC saw no alter-
native to the use of ``fdisk'' partitions. The ARC was
unsatisfied that there was no absolute alternative to con-
suming three of the four partitions, but approved this
usage.
Currently, there are significant differences between the
SPARC and x86 VTOC (Volume Table of Contents). One signifi-
cant difference is that the SPARC VTOC only supports 8
slices while the x86 version supports 16. This disparity
was justified by the assertion that x86 boot and alternate
sector support requires additional partitions (leaving fewer
for the user). In the case of alternate sectors, this
turned out to be an implementation choice, rather than a
requirement. However, there have been user requests for
supporting a larger number of slices.
The ARC expressed the desire for an architecture for VTOCs.
There was some disagreement if this meant clear definitions
of big-endian and little-endian versions or if a more ela-
borate, XDR VTOC was the correct solution. The ARC did not
believe that resolving this issue was the responsibility of
the PPC Project Team and allowed the use of the current x86
form of the VTOC on a little-endian port of Solaris to
PowerPC. This does not set a precedent for future ports.
3.4. Interface Table
___________________________________________________________________________________
| Interfaces Exported |
|______________________|________________|_________________________________________|
|Interface | Classification| Comments |
|______________________|________________|_________________________________________|
| | Public | File name |
|_CHAR_ALIGNMENT | Public | Feature test macro (see PSARC/1993/444)|
|_SHORT_ALIGNMENT | Public | Feature test macro (see PSARC/1993/444)|
|_INT_ALIGNMENT | Public | Feature test macro (see PSARC/1993/444)|
|_LONG_ALIGNMENT | Public | Feature test macro (see PSARC/1993/444)|
|_LONG_LONG_ALIGNMENT | Public | Feature test macro (see PSARC/1993/444)|
|_DOUBLE_ALIGNMENT | Public | Feature test macro (see PSARC/1993/444)|
|_LONG_DOUBLE_ALIGNMENT| Public | Feature test macro (see PSARC/1993/444)|
|_POINTER_ALIGNMENT | Public | Feature test macro (see PSARC/1993/444)|
|_MAX_ALIGNMENT | Public | Feature test macro (see PSARC/1993/444)|
|_ALIGNMENT_REQ | Public | Feature test macro (see PSARC/1993/444)|
|_ALIGNMENT_OPT | Public | Feature test macro (see PSARC/1993/444)|
|_FIRMWARE_NEEDS_FDISK | Public | Feature test macro (see PSARC/1993/444)|
|_NO_FDISK_PRESENT | Public | Feature test macro (see PSARC/1993/444)|
|va_copy() | Public | Additional varargs macro |
|__builtin_va_info() | Public | See PSARC/1992/138 |
| | Uncommitted | File name |
|______________________|________________|_________________________________________|
psarc/1994/196 Copyright 1995 Sun Microsystems, Inc.
- 6 -
___________________________________________________________________________________
| Interfaces Exported |
|______________________|________________|_________________________________________|
|Interface | Classification| Comments |
|______________________|________________|_________________________________________|
|Solaris FDISK ID (130)| Public | Identifies Solaris PPC partition |
|______________________|________________|_________________________________________|
4. Minority Opinion(s)
None.
5. Advisory Information
This case touched upon the long unresolved issue of the cmdk
driver. With one exception, the ARC expressed dismay that
this implementation was ported to another instruction set
architecture without the review it should have had before
originally being shipped as part of the ``Solaris for
Intel'' product. The possibility of adding a dependency on
that review to the ``Solaris on PowerPC'' was considered
(actually expressed at the inception review). However, such
a dependency was not considered to be in the best interests
of the corporation. Instead, the weak alternative of the
following ``Advisory Information'' was decided upon.
A project to unify the disk driver architectures for
SCSI and direct attach devices should be initiated.
Further investigation should be made into ways to restore
the multiple OS support to the ``fdisk'' mechanism. This
may not be possible or practical until the industry direc-
tion is clearer.
A project to regularize the VTOC should be created. There
is some disagreement if this means clear definitions of
big-endian and little-endian versions or if a more ela-
borate, XDR VTOC is the correct solution. Backwards compa-
tibility must be maintained.
6. Appendices
6.1. Appendix A: Technical Changes Required
1. Do not reserve the sys_sysppc system call. Allow
the first project which asserts a need for it to
define it.
6.2. Appendix B: Technical Changes Advised
None.
psarc/1994/196 Copyright 1995 Sun Microsystems, Inc.
- 7 -
6.3. Appendix C: Reference Material
1. psarc/1993/685, PowerPC ABI, Steve Z.
2. System V Application Binary Interface, PowerPC Proces-
sor Supplement (Draft), Steve Z., SunSoft; K.
K., IBM, March 1995
3. psarc/1993/444, Add isa_defs.h, Joseph Kowalski
4. psarc/1993/138, Compiler Predefines, Lee Bieber
5. psarc/1994/168/materials/issue4.varargs (This case)
6. psarc/1993/015, x86 Disk Layout, Kevin S.
psarc/1994/196 Copyright 1995 Sun Microsystems, Inc.
From roland.mainz@nrubsig.org Wed May 6 19:54:41 2009
Received: from sunmail5.uk.sun.com (sunmail5.UK.Sun.COM [129.156.85.165])
by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id n472sd2C008114
for ; Wed, 6 May 2009 19:54:40 -0700 (PDT)
Received: from nwk-avmta-2.sfbay.sun.com (nwk-avmta-2.SFBay.Sun.COM [129.145.155.6])
by sunmail5.uk.sun.com (8.13.8+Sun/8.13.8/ENSMAIL,v2.2) with ESMTP id n472sXGC029298;
Thu, 7 May 2009 03:54:38 +0100 (BST)
Received: from pmxchannel-daemon.nwk-avmta-2.sfbay.sun.com by
nwk-avmta-2.sfbay.sun.com
(Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
id <0KJ900E0J6QXUH00@nwk-avmta-2.sfbay.sun.com>; Wed,
06 May 2009 19:54:33 -0700 (PDT)
Received: from brmea-mail-2.sun.com ([192.18.98.43])
by nwk-avmta-2.sfbay.sun.com
(Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
with ESMTP id <0KJ900BSP6QX2670@nwk-avmta-2.sfbay.sun.com>; Wed,
06 May 2009 19:54:33 -0700 (PDT)
Received: from relay15i.sun.com
(ip125.net129179-4.block1.us.syntegra.com [129.179.4.125])
by brmea-mail-2.sun.com (8.13.6+Sun/8.12.9) with ESMTP id n472lgI1023995; Thu,
07 May 2009 02:54:32 +0000 (GMT)
Received: from mmp14es.mmp.us.syntegra.com ([160.41.208.14] [160.41.208.14])
by relay15i.sun.com with ESMTP id BT-MMP-1721496; Thu,
07 May 2009 02:54:32 +0000 (Z)
Received: from relay14i.sun.com (relay14i.sun.com [129.179.4.124])
by mmp14es.mmp.us.syntegra.com with ESMTP id BT-MMP-524814; Thu,
07 May 2009 02:54:32 +0000 (Z)
Received: from mail-in-09.arcor-online.net ([151.189.21.49] [151.189.21.49])
by relay1i.sun.com with ESMTP id BT-MMP-5769081; Thu,
07 May 2009 02:54:32 +0000 (Z)
Received: from mail-in-10-z2.arcor-online.net
(mail-in-10-z2.arcor-online.net [151.189.8.27]) by mx.arcor.de (Postfix)
with ESMTP id E20561AF2FA; Thu, 07 May 2009 04:16:49 +0200 (CEST)
Received: from mail-in-11.arcor-online.net
(mail-in-11.arcor-online.net [151.189.21.51])
by mail-in-10-z2.arcor-online.net (Postfix) with ESMTP id CA18723D2B5; Thu,
07 May 2009 04:16:49 +0200 (CEST)
Received: from jupiterb48.nrubsig.org
(dslb-094-219-212-156.pools.arcor-ip.net [94.219.212.156])
by mail-in-11.arcor-online.net (Postfix) with ESMTPS id 27B9EE38FE; Thu,
07 May 2009 04:16:48 +0200 (CEST)
Received: from nrubsig.org (localhost [127.0.0.1]) by jupiterb48.nrubsig.org
(8.13.8+Sun/8.13.8) with ESMTP id n472GkrR002190; Thu,
07 May 2009 04:16:47 +0200 (CEST)
Date: Thu, 07 May 2009 04:16:46 +0200
From: Roland Mainz
Subject: Requesting ARC cases 1993/685, 1994/188, 1994/196, 1994/197, 1994/302,
1995/077, 1995/082, 1995/153
Sender: gisburn@jupiterb48.nrubsig.org
To: opensolaris-arc@opensolaris.org
Cc: Bonnie Corwin ,
"PSARC-EXT@sun.com" ,
emerging-platforms-discuss@opensolaris.org
Message-id: <4A02448E.1AC9B6BA@nrubsig.org>
MIME-version: 1.0
X-Mailer: Mozilla 4.76 [en] (X11; U; SunOS 5.11 sun4u)
Content-type: text/plain; charset=us-ascii
Content-transfer-encoding: 7BIT
X-Accept-Language: en
X-PMX-Version: 5.4.1.325704
X-Brightmail-Tracker: AAAAAA==
X-DKIM: Sendmail DKIM Filter v2.8.2 mail-in-11.arcor-online.net 27B9EE38FE
X-Antispam: No, score=0.0/5.0, scanned in 0.057sec at (localhost [127.0.0.1])
by smf-spamd v1.3.1 - http://smfs.sf.net/
x_sac_archived: PSARC/1993/685
Status: RO
Content-Length: 704
hi!
----
I'd like to request to open the following ARC cases for publish access:
PSARC 1993/685 PowerPC_ABI
PSARC 1994/188 Solaris Kernel for PowerPC
PSARC 1994/196 PowerPC Header Files
PSARC 1994/197 PowerPC Commands
PSARC 1994/302 PowerPC_Booting
PSARC 1995/077 processor_info(2) binding for PowerPC and future ISAs
PSARC 1995/082 PowerPC sysconfig parameters
PSARC 1995/153 PPC installboot
We need this materials as template for a set of ARC casess to specify
support for a new architecture/hardware platform...
----
Bye,
Roland
--
__ . . __
(o.\ \/ /.o) roland.mainz@nrubsig.org
\__\/\/__/ MPEG specialist, C&&JAVA&&Sun&&Unix programmer
/O /==\ O\ TEL +49 641 3992797
(;O/ \/ \O;)