Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d87d8c11 authored by Sam Ravnborg's avatar Sam Ravnborg Committed by David S. Miller
Browse files

sparc32: handle leon in cpu.c



A few hardcoded constant were replaced by symbolic
versions to improve readability

Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
Cc: Daniel Hellstrom <daniel@gaisler.com>
Cc: Konrad Eisele <konrad@gaisler.com>
parent b08b5c9c
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -35,7 +35,9 @@
#define PSR_VERS    0x0f000000         /* cpu-version field          */
#define PSR_IMPL    0xf0000000         /* cpu-implementation field   */

#define PSR_VERS_SHIFT		24
#define PSR_IMPL_SHIFT		28
#define PSR_VERS_SHIFTED_MASK	0xf
#define PSR_IMPL_SHIFTED_MASK	0xf

#define PSR_IMPL_TI		0x4
+9 −9
Original line number Diff line number Diff line
@@ -121,7 +121,7 @@ static const struct manufacturer_info __initconst manufacturer_info[] = {
		FPU(-1, NULL)
	}
},{
	4,
	PSR_IMPL_TI,
	.cpu_info = {
		CPU(0, "Texas Instruments, Inc. - SuperSparc-(II)"),
		/* SparcClassic  --  borned STP1010TAB-50*/
@@ -191,7 +191,7 @@ static const struct manufacturer_info __initconst manufacturer_info[] = {
		FPU(-1, NULL)
	}
},{
	0xF,		/* Aeroflex Gaisler */
	PSR_IMPL_LEON,		/* Aeroflex Gaisler */
	.cpu_info = {
		CPU(3, "LEON"),
		CPU(-1, NULL)
@@ -440,16 +440,16 @@ static int __init cpu_type_probe(void)
	int psr_impl, psr_vers, fpu_vers;
	int psr;

	psr_impl = ((get_psr() >> 28) & 0xf);
	psr_vers = ((get_psr() >> 24) & 0xf);
	psr_impl = ((get_psr() >> PSR_IMPL_SHIFT) & PSR_IMPL_SHIFTED_MASK);
	psr_vers = ((get_psr() >> PSR_VERS_SHIFT) & PSR_VERS_SHIFTED_MASK);

	psr = get_psr();
	put_psr(psr | PSR_EF);
#ifdef CONFIG_SPARC_LEON

	if (psr_impl == PSR_IMPL_LEON)
		fpu_vers = get_psr() & PSR_EF ? ((get_fsr() >> 17) & 0x7) : 7;
#else
	else
		fpu_vers = ((get_fsr() >> 17) & 0x7);
#endif

	put_psr(psr);