aa110595802a8183eb85952b177b606bb06ad6f7
[catalyst.git] / modules / catalyst / arch / mips.py
1
2 import catalyst.arch
3
4 class generic_mips(catalyst.arch.generic_arch):
5         "Abstract base class for all mips builders [Big-endian]"
6         def __init__(self,myspec):
7                 catalyst.arch.generic_arch.__init__(self,myspec)
8                 self.settings["CHROOT"]="chroot"
9                 self.settings["CHOST"]="mips-unknown-linux-gnu"
10
11 class generic_mipsel(catalyst.arch.generic_arch):
12         "Abstract base class for all mipsel builders [Little-endian]"
13         def __init__(self,myspec):
14                 catalyst.arch.generic_arch.__init__(self,myspec)
15                 self.settings["CHROOT"]="chroot"
16                 self.settings["CHOST"]="mipsel-unknown-linux-gnu"
17
18 class arch_mips1(generic_mips):
19         "Builder class for MIPS I [Big-endian]"
20         def __init__(self,myspec):
21                 generic_mips.__init__(self,myspec)
22                 self.settings["CFLAGS"]="-O2 -mips1 -mabi=32 -pipe"
23
24 class arch_mips3(generic_mips):
25         "Builder class for MIPS III [Big-endian]"
26         def __init__(self,myspec):
27                 generic_mips.__init__(self,myspec)
28                 self.settings["CFLAGS"]="-O2 -mips3 -mabi=32 -pipe"
29
30 class arch_mips3_n32(generic_mips):
31         "Builder class for MIPS III [Big-endian N32]"
32         def __init__(self,myspec):
33                 generic_mips.__init__(self,myspec)
34                 self.settings["CFLAGS"]="-O2 -mips3 -mabi=n32 -pipe"
35                 self.settings["CHOST"]="mips64-unknown-linux-gnu"
36                 self.settings["HOSTUSE"]=["n32"]
37
38 class arch_mips3_n64(generic_mips):
39         "Builder class for MIPS III [Big-endian N64]"
40         def __init__(self,myspec):
41                 generic_mips.__init__(self,myspec)
42                 self.settings["CFLAGS"]="-O2 -mips3 -mabi=64 -pipe"
43                 self.settings["CHOST"]="mips64-unknown-linux-gnu"
44                 self.settings["HOSTUSE"]=["n64"]
45
46 class arch_mips4(generic_mips):
47         "Builder class for MIPS IV [Big-endian]"
48         def __init__(self,myspec):
49                 generic_mips.__init__(self,myspec)
50                 self.settings["CFLAGS"]="-O2 -mips4 -mabi=32 -pipe"
51
52 class arch_mips4_n32(generic_mips):
53         "Builder class for MIPS IV [Big-endian N32]"
54         def __init__(self,myspec):
55                 generic_mips.__init__(self,myspec)
56                 self.settings["CFLAGS"]="-O2 -mips4 -mabi=n32 -pipe"
57                 self.settings["CHOST"]="mips64-unknown-linux-gnu"
58                 self.settings["HOSTUSE"]=["n32"]
59
60 class arch_mips4_n64(generic_mips):
61         "Builder class for MIPS IV [Big-endian N64]"
62         def __init__(self,myspec):
63                 generic_mips.__init__(self,myspec)
64                 self.settings["CFLAGS"]="-O2 -mips4 -mabi=64 -pipe"
65                 self.settings["CHOST"]="mips64-unknown-linux-gnu"
66                 self.settings["HOSTUSE"]=["n64"]
67
68 class arch_mipsel1(generic_mipsel):
69         "Builder class for all MIPS I [Little-endian]"
70         def __init__(self,myspec):
71                 generic_mipsel.__init__(self,myspec)
72                 self.settings["CFLAGS"]="-O2 -mips1 -mabi=32 -pipe"
73
74 class arch_mipsel3(generic_mipsel):
75         "Builder class for all MIPS III [Little-endian]"
76         def __init__(self,myspec):
77                 generic_mipsel.__init__(self,myspec)
78                 self.settings["CFLAGS"]="-O2 -mips3 -mabi=32 -pipe"
79
80 class arch_mipsel3_n32(generic_mipsel):
81         "Builder class for all MIPS III [Little-endian N32]"
82         def __init__(self,myspec):
83                 generic_mipsel.__init__(self,myspec)
84                 self.settings["CFLAGS"]="-O2 -mips3 -mabi=n32 -pipe"
85                 self.settings["CHOST"]="mips64el-unknown-linux-gnu"
86                 self.settings["HOSTUSE"]=["n32"]
87
88 class arch_loongson2e(generic_mipsel):
89         "Builder class for all Loongson 2E [Little-endian]"
90         def __init__(self,myspec):
91                 generic_mipsel.__init__(self,myspec)
92                 self.settings["CFLAGS"]="-O2 -march=loongson2e -mabi=32 -pipe -mplt"
93
94 class arch_loongson2e_n32(generic_mipsel):
95         "Builder class for all Loongson 2E [Little-endian N32]"
96         def __init__(self,myspec):
97                 generic_mipsel.__init__(self,myspec)
98                 self.settings["CFLAGS"]="-O2 -march=loongson2e -mabi=n32 -pipe -mplt"
99                 self.settings["CHOST"]="mips64el-unknown-linux-gnu"
100                 self.settings["HOSTUSE"]=["n32"]
101
102 class arch_loongson2f(generic_mipsel):
103         "Builder class for all Loongson 2F [Little-endian]"
104         def __init__(self,myspec):
105                 generic_mipsel.__init__(self,myspec)
106                 self.settings["CFLAGS"]="-O3 -march=loongson2f -mabi=32 -pipe -mplt -Wa,-mfix-loongson2f-nop"
107
108 class arch_loongson2f_n32(generic_mipsel):
109         "Builder class for all Loongson 2F [Little-endian N32]"
110         def __init__(self,myspec):
111                 generic_mipsel.__init__(self,myspec)
112                 self.settings["CFLAGS"]="-O3 -march=loongson2f -mabi=n32 -pipe -mplt -Wa,-mfix-loongson2f-nop"
113                 self.settings["CHOST"]="mips64el-unknown-linux-gnu"
114                 self.settings["HOSTUSE"]=["n32"]
115
116 class arch_mipsel4(generic_mipsel):
117         "Builder class for all MIPS IV [Little-endian]"
118         def __init__(self,myspec):
119                 generic_mipsel.__init__(self,myspec)
120                 self.settings["CFLAGS"]="-O2 -mips4 -mabi=32 -pipe"
121
122 class arch_mipsel4_n32(generic_mipsel):
123         "Builder class for all MIPS IV [Little-endian N32]"
124         def __init__(self,myspec):
125                 generic_mipsel.__init__(self,myspec)
126                 self.settings["CFLAGS"]="-O2 -mips4 -mabi=n32 -pipe"
127                 self.settings["CHOST"]="mips64el-unknown-linux-gnu"
128                 self.settings["HOSTUSE"]=["n32"]
129
130 class arch_cobalt(generic_mipsel):
131         "Builder class for all cobalt [Little-endian]"
132         def __init__(self,myspec):
133                 generic_mipsel.__init__(self,myspec)
134                 self.settings["CFLAGS"]="-O2 -march=r5000 -mabi=32 -pipe"
135                 self.settings["CHOST"]="mipsel-unknown-linux-gnu"
136                 self.settings["HOSTUSE"]=["cobalt"]
137
138 class arch_cobalt_n32(generic_mipsel):
139         "Builder class for all cobalt [Little-endian N32]"
140         def __init__(self,myspec):
141                 arch_mipsel4_n32.__init__(self,myspec)
142                 self.settings["CFLAGS"]="-O2 -march=r5000 -mabi=n32 -pipe"
143                 self.settings["HOSTUSE"]=["cobalt","n32"]
144
145 _subarch_map = {
146         "cobalt"                : arch_cobalt,
147         "cobalt_n32"    : arch_cobalt_n32,
148         "mips"                  : arch_mips1,
149         "mips1"                 : arch_mips1,
150         "mips3"                 : arch_mips3,
151         "mips3_n32"             : arch_mips3_n32,
152         "mips3_n64"             : arch_mips3_n64,
153         "mips4"                 : arch_mips4,
154         "mips4_n32"             : arch_mips4_n32,
155         "mipsel"                : arch_mipsel1,
156         "mipsel1"               : arch_mipsel1,
157         "mipsel3"               : arch_mipsel3,
158         "mipsel3_n32"   : arch_mipsel3_n32,
159         "mipsel4"               : arch_mipsel4,
160         "mipsel4_n32"   : arch_mipsel4_n32,
161         "loongson2e"            : arch_loongson2e,
162         "loongson2e_n32"        : arch_loongson2e_n32,
163         "loongson2f"            : arch_loongson2f,
164         "loongson2f_n32"        : arch_loongson2f_n32,
165 }
166
167 _machine_map = ("mips","mips64")
168
169 # vim: ts=4 sw=4 sta noet sts=4 ai