The GNU 64-bit PL8 compiler: Toward an open standard environment for firmware development

For two decades, large parts of zSeries® firmware have been Written in the PL8 programming language. The existence of a large amount of mature zSeries firmware source code and our excellent experienee with PL8 for system programming suggest keeping this language. However, the firmware address space of today's, zSeries servers may exceed 2 GB, raising the need for a new 64-bit PL8 compiler, since the original implementation, developed at the IBM Thomas J. Watson Research Center, Yorktown Heihts, New York, supports only 32-bit platforms. The GNU compiler collection (GCC) (GNU is a freeware UNIX® -like operating system) has been used to translate those parts of firmware written in C for some years and has also proved successful in compiling LinuxTM for zSeries. This fact, combined with the highly modular GCC design, suggested reimplementing PL8 within the GCC framework. In this paper, we report on the extension of PL8 to support 64-bit addressing, its implementation as a GCC front end, and the validation of the new compiler. We also evaluate PL8 as a language for highly reliable low-level programming and give some performance data. The paper documents the high level of quality achieved by the GCC open-source project and how Such software fits into the traditional IBM software development processes.

[1]  Richard M. Stallman,et al.  Using and Porting the GNU Compiler Collection , 2000 .

[2]  Erhard Plödereder,et al.  Where Does GOTO Go to? , 1996, Ada-Europe.

[3]  Jürgen Märgner,et al.  High Level Microprogramming in I370 , 1989 .

[4]  Joachim von Buttlar,et al.  z/CECSIM: An efficient and comprehensive microcode simulator for the IBM eServer z900 , 2002, IBM J. Res. Dev..

[5]  John Cocke,et al.  A methodology for the real world , 1981 .

[6]  Martin Hopkins,et al.  An overview of the PL.8 compiler , 1982, SIGP.

[7]  John Cocke,et al.  Programming languages and their compilers: Preliminary notes , 1969 .

[8]  Ulrich Weigand,et al.  Porting GCC to the IBM S/390 platform , 2003 .

[9]  Erhard Plödereder,et al.  The Evolution of GOTO Usage and its Effects on Software Quality , 1999, GI Jahrestagung.

[10]  Alfred Strohmeier Reliable Software Technologies — Ada-Europe '96 , 1996, Lecture Notes in Computer Science.

[11]  Kenneth J. Oakes,et al.  Multiple-logical-channel subsystems: Increasing zSeries I/O scalability and connectivity , 2004, IBM J. Res. Dev..

[12]  Lisa Cranton Heller,et al.  Millicode in an IBM zSeries processor , 2004, IBM J. Res. Dev..

[13]  John Cocke,et al.  Register Allocation Via Coloring , 1981, Comput. Lang..

[14]  Sidney B. Gasser Program optimization , 1972, SICOSIM3.

[15]  Robert W. Sebesta,et al.  Concepts of programming languages (2. ed.) , 1993, Benjamin/Cummings series in computer science.

[16]  Software Pioneers , 2002, Springer Berlin Heidelberg.