# This file contains the table of known CPU names.
#
# Architecture names are formed as a combination of the system name
# (from ostable) and CPU name (from this table) after mapping from
# the Debian triplet (from triplettable). A list of architecture
# names in the Debian ‘sid’ distribution can be found in the archtable
# file.
#
# Column 1 is the Debian name for the CPU, used to form the cpu part in
# the Debian triplet.
# Column 2 is the GNU name for the CPU, used to output build and host
# targets in ‘dpkg-architecture’.
# Column 3 is an extended regular expression used to match against the
# CPU part of the output of the GNU config.guess script.
# Column 4 is the size (in bits) of the integers/pointers
# Column 5 is the endianness (byte ordering in numbers)
#
# <Debian name>	<GNU name>	<config.guess regex>	<Bits>	<Endianness>
i386		i486		(i[3456]86|pentium)	32	little
ia64		ia64		ia64			64	little
alpha		alpha		alpha.*			64	little
amd64		x86_64		x86_64			64	little
armeb		armeb		arm.*b			32	big
arm		arm		arm.*			32	little
avr32		avr32		avr32			32	big
hppa		hppa		hppa.*			32	big
m32r		m32r		m32r			32	big
m68k		m68k		m68k			32	big
mips		mips		mips(eb)?		32	big
mipsel		mipsel		mipsel			32	little
powerpc		powerpc		(powerpc|ppc)		32	big
ppc64		powerpc64	(powerpc|ppc)64		64	big
s390		s390		s390			32	big
s390x		s390x		s390x			64	big
sh3		sh3		sh3			32	little
sh3eb		sh3eb		sh3eb			32	big
sh4		sh4		sh4			32	little
sh4eb		sh4eb		sh4eb			32	big
sparc		sparc		sparc			32	big
sparc64		sparc64		sparc64			64	big
