Sign in Join
Wiki copytemporary

ZSeries/Part 3: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: ZSeries/Part 3

OldNewLine
1+*[[ZSeries|Go back to zSeries]]* — [[ZSeries/Part 2|Go Back to Part 2]] — [[ZSeries/Part 4|Go Forward to Part 4]]
2+
3+This continues the list from part 2 of an examination of every unit in the compiler and where changes/additions need to be made for the addition of a new CPU and/or operating system environment.
4+
5+# Units I will have to create
6+
7+## Unit i_vse
8+
9+
10+*Called from: **compiler.pas**, includes **fpcdefs.inc**, no called units noted*
11+
12+This will be related to use of the compiler under one of the standard IBM operating systems, including VS/1, VM, CMS, or possibly as a program running on the CICS transaction monitor. More on this later.
13+
14+## t_s370.pas
15+
16+(The cross-compiler instructions say I'll need this. It will be in the **systems** subdirectory. Will figure out later.) It appears to be used for running the support programs such as the assembler and the linker.
17+
18+# Other files
19+
20+From the description for porting the compiler, a few other files have to be edited.
21+
22+- utils/fpcm/fpcmmain.pp - add a new entry at the end of TCpu and TOs, near line 85:
23+
24+`     TCpu=(`\
25+`       c_i386,c_m68k,c_powerpc,c_sparc,c_x86_64,c_arm,c_powerpc64,c_avr,c_armeb,`\
26+`       c_armel,c_mips,c_mipsel,c_mips64,c_mips64el,c_s370`\
27+`     );`
28+
29+`     TOS=(`\
30+`       o_linux,o_go32v2,o_win32,o_os2,o_freebsd,o_beos,o_haiku,o_netbsd,`\
31+`       o_amiga,o_atari, o_solaris, o_qnx, o_netware, o_openbsd,o_wdosx,`\
32+`       o_palmos,o_macos,o_darwin,o_emx,o_watcom,o_morphos,o_netwlibc,`\
33+`       o_win64,o_wince,o_gba,o_nds,o_embedded,o_symbian,o_nativent,o_iphonesim,`\
34+`       o_wii,o_s370`\
35+`     );`
36+
37+About line 81, add the new item to these entries:
38+
39+`     CpuStr : array[TCpu] of string=(`\
40+`       'i386','m68k','powerpc','sparc','x86_64','arm','powerpc64','avr','armeb',`\
41+`       'armel', 'mips', 'mipsel', 'mips64', 'mips64el','s370'`\
42+`     );`
43+
44+`     CpuSuffix : array[TCpu] of string=(`\
45+`       '_i386','_m68k','_powerpc','_sparc','_x86_64','_arm','_powerpc64','avr',`\
46+`       '_armeb', '_armel', '_mips', '_mipsel', '_mips64', '_mips64el','_s370'`\
47+`     );`
48+
49+`     ppcSuffix : array[TCpu] of string=(`\
50+`       '386','m68k','ppc','sparc','x86_64','arm','ppc64','avr','armeb', 'armel',`\
51+`       'mips', 'mipsel', 'mips64', 'mips64el','s370'`\
52+`     );`
53+
54+`     OSStr : array[TOS] of string=(`\
55+`       'linux','go32v2','win32','os2','freebsd','beos','haiku','netbsd',`\
56+`       'amiga','atari','solaris', 'qnx', 'netware','openbsd','wdosx',`\
57+`       'palmos','macos','darwin','emx','watcom','morphos','netwlibc',`\
58+`       'win64','wince','gba','nds','embedded','symbian','nativent',`\
59+`       'iphonesim', 'wii','vse'`\
60+`     );`
61+
62+`     OSSuffix : array[TOS] of string=(`\
63+`       '_linux','_go32v2','_win32','_os2','_freebsd','_beos','_haiku','_netbsd',`\
64+`       '_amiga','_atari','_solaris', '_qnx', '_netware','_openbsd','_wdosx',`\
65+`       '_palmos','_macos','_darwin','_emx','_watcom','_morphos','_netwlibc',`\
66+`       '_win64','_wince','_gba','_nds','_embedded','_symbian','_nativent',`\
67+`       '_iphonesim','_wii','_vse'`\
68+`     );`
69+
70+And then this huge table is changed to the following:
71+
72+`     { This table is kept OS,Cpu because it is easier to maintain (PFV) }`\
73+`     OSCpuPossible : array[TOS,TCpu] of boolean = (`\
74+`       { os          i386    m68k  ppc    sparc  x86_64 arm    ppc64  avr    armeb  armel  mips   mipsel mips64 misp64el, s370}`\
75+`       { linux }   ( true,  true,  true,  true,  true,  true,  true,  false, true,  false, false, true,  false,  false,  true),`\
76+`       { go32v2 }  ( true,  false, false, false, false, false, false, false, false, false, false, false, false,  false,  false),`\
77+`       { win32 }   ( true,  false, false, false, false, false, false, false, false, false, false, false, false,  false,  false),`\
78+`       { os2 }     ( true,  false, false, false, false, false, false, false, false, false, false, false, false,  false,  false),`\
79+`       { freebsd } ( true,  true,  false, false, true,  false, false, false, false, false, false, false, false,  false,  false),`\
80+`       { beos }    ( true,  false, false, false, false, false, false, false, false, false, false, false, false,  false,  false),`\
81+`       { haiku }   ( true,  false, false, false, false, false, false, false, false, false, false, false, false,  false,  false),`\
82+`       { netbsd }  ( true,  true,  true,  true,  false, false, false, false, false, false, false, false, false,  false,  false),`\
83+`       { amiga }   ( false, true,  true,  false, false, false, false, false, false, false, false, false, false,  false,  false),`\
84+`       { atari }   ( false, true,  false, false, false, false, false, false, false, false, false, false, false,  false,  false),`\
85+`       { solaris } ( true,  false, false, true,  true,  false, false, false, false, false, false, false, false,  false,  false),`\
86+`       { qnx }     ( true,  false, false, false, false, false, false, false, false, false, false, false, false,  false,  false),`\
87+`       { netware } ( true,  false, false, false, false, false, false, false, false, false, false, false, false,  false,  false),`\
88+`       { openbsd } ( true,  true,  false, false, false, false, false, false, false, false, false, false, false,  false,  false),`\
89+`       { wdosx }   ( true,  false, false, false, false, false, false, false, false, false, false, false, false,  false,  false),`\
90+`       { palmos }  ( false, true,  false, false, false, true,  false, false, false, false, false, false, false,  false,  false),`\
91+`       { macos }   ( false, false, true,  false, false, false, false, false, false, false, false, false, false,  false,  false),`\
92+`       { darwin }  ( true,  false, true,  false, true,  true,  true,  false, false, false, false, false, false,  false,  false),`\
93+`       { emx }     ( true,  false, false, false, false, false, false, false, false, false, false, false, false,  false,  false),`\
94+`       { watcom }  ( true,  false, false, false ,false, false, false, false, false, false, false, false, false,  false,  false),`\
95+`       { morphos } ( false, false, true,  false ,false, false, false, false, false, false, false, false, false,  false,  false),`\
96+`       { netwlibc }( true,  false, false, false, false, false, false, false, false, false, false, false, false,  false,  false),`\
97+`       { win64   } ( false, false, false, false, true,  false, false, false, false, false, false, false, false,  false,  false),`\
98+`       { wince    }( true,  false, false, false, false, true,  false, false, false, false, false, false, false,  false,  false),`\
99+`       { gba    }  ( false, false, false, false, false, true,  false, false, false, false, false, false, false,  false,  false),`\
100+`       { nds    }  ( false, false, false, false, false, true,  false, false, false, false, false, false, false,  false,  false),`\
101+`       { embedded }( true,  true,  true,  true,  true,  true,  true,  true,  true , false, false, false, false,  false,  false),`\
102+`       { symbian } ( true,  false, false, false, false, true,  false, false, false, false, false, false, false,  false,  false),`\
103+`       { nativent }( true,  false, false, false, false, false, false, false, false, false, false, false, false,  false,  false),`\
104+`       { iphonesim }( true,  false, false, false, false, false, false, false, false, false, false, false, false, false,  false),`\
105+`       { wii }     ( false, false, true,  false, false, false, false, false, false, false, false, false, false,  false,  false),`\
106+`       { vse }     ( false, false, false, false, false, false, false, false, false, false, false, false, false,  false,  true)`\
107+`     );`
108+
109+I compiled PP under Lazarus using parameters **-dwin32 -di386** and it compiles without error, so the changes have not damaged the original compiler. The next thing to do is to see what happens when trying it with **-ds370 -dlinux** or **-ds370 -dvse** and see if it fails, crashes or just does nothing.
110+
111+It does nothing. It compiles okay with both of these. Of course, the question now is where it would go to start code generation. That will take a while.
112+
113+
114+*[[ZSeries|Go back to zSeries]]* — [[ZSeries/Part 2|Go Back to Part 2]] — [[ZSeries/Part 4|Go Forward to Part 4]]
115+
116+---
117+*From the Free Pascal wiki, page "ZSeries/Part 3", as it stood on 2013-04-04 after a change by Jwdietrich, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
118+Category: High-performance computing
119+Category: Mainframes

Back to history