Subject: CVS commit: src/sys/arch/arm/arm32
To: None <source-changes@NetBSD.org>
From: Chris Gilbert <chris@netbsd.org>
List: source-changes
Date: 01/13/2008 02:43:54
Module Name:	src
Committed By:	chris
Date:		Sun Jan 13 02:43:54 UTC 2008

Modified Files:
	src/sys/arch/arm/arm32: cpuswitch.S

Log Message:
Take a micro-optimization from FreeBSD/arm.

When switching from SVC32->UND32 to read/write R13_und we don't need to clear
the mode bits as:
PSR_SVC32_MODE | PSR_UND32_MODE = PSR_UND32_MODE

While reading the code I also noted that interrupts are enabled for most of
the function as pmap_switch returns with interrupts in the state they are on
entry.  This appears to be different to what the code after pmap_switch
expects, in that the behaviour suggests they should be disabled.

Because of this I've made the writing of R13_und explicitly disable.
interupts as part of the mode switch.

This also means that the IRQenableALL call is now redundant as the
interrupts are already enabled.

XXX: it's not clear if arm_fpe_core_changecontext should be called with
interrupts disabled.

Remove unused items: IRQdisableALL, IRQenableALL & Lcpufuncs.

Tested on cats. lmbench shows no performance change.


To generate a diff of this commit:
cvs rdiff -r1.52 -r1.53 src/sys/arch/arm/arm32/cpuswitch.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.