Subject: CVS commit: syssrc/sys/arch
To: None <source-changes@netbsd.org>
From: Ben Harris <bjh21@netbsd.org>
List: source-changes
Date: 10/15/2002 01:32:55
Module Name:	syssrc
Committed By:	bjh21
Date:		Mon Oct 14 22:32:55 UTC 2002

Modified Files:
	syssrc/sys/arch/arm/arm32: cpuswitch.S
	syssrc/sys/arch/arm/footbridge: footbridge_irq.S
	syssrc/sys/arch/arm/iomd: iomd_irq.S
	syssrc/sys/arch/arm/ixp12x0: ixp12x0_irq.S
	syssrc/sys/arch/arm/ofw: ofw_irq.S
	syssrc/sys/arch/arm/sa11x0: sa11x0_irq.S
	syssrc/sys/arch/arm/xscale: i80200_irq.S i80321_irq.S
	syssrc/sys/arch/evbarm/ifpga: ifpga_irq.S
	syssrc/sys/arch/evbarm/iq80310: iq80310_start.S
	syssrc/sys/arch/evbarm/iq80321: iq80321_start.S
	syssrc/sys/arch/evbarm/stand/gzboot: srtbegin.S
	syssrc/sys/arch/hpcarm/hpcarm: locore.S
	syssrc/sys/arch/netwinder/netwinder: nwmmu.S
	syssrc/sys/arch/shark/isa: isa_irq.S

Log Message:
Continue the " - . - 8" purge.  Specifically:

add	rd, pc, #foo - . - 8		->	adr	rd, foo
ldr	rd, [pc, #foo - . - 8]		->	ldr	rd, foo

Also, when saving the return address for a function pointer call, use
"mov lr, pc" just before the call unless the return address is somewhere
other than just after the call site.

Finally, a few obvious little micro-optimisations like using LDR directly
rather than ADR followed by LDR, and loading directly into PC rather than
bouncing via R0.


To generate a diff of this commit:
cvs rdiff -r1.23 -r1.24 syssrc/sys/arch/arm/arm32/cpuswitch.S
cvs rdiff -r1.2 -r1.3 syssrc/sys/arch/arm/footbridge/footbridge_irq.S
cvs rdiff -r1.2 -r1.3 syssrc/sys/arch/arm/iomd/iomd_irq.S
cvs rdiff -r1.2 -r1.3 syssrc/sys/arch/arm/ixp12x0/ixp12x0_irq.S
cvs rdiff -r1.1 -r1.2 syssrc/sys/arch/arm/ofw/ofw_irq.S
cvs rdiff -r1.3 -r1.4 syssrc/sys/arch/arm/sa11x0/sa11x0_irq.S
cvs rdiff -r1.6 -r1.7 syssrc/sys/arch/arm/xscale/i80200_irq.S
cvs rdiff -r1.4 -r1.5 syssrc/sys/arch/arm/xscale/i80321_irq.S
cvs rdiff -r1.2 -r1.3 syssrc/sys/arch/evbarm/ifpga/ifpga_irq.S
cvs rdiff -r1.3 -r1.4 syssrc/sys/arch/evbarm/iq80310/iq80310_start.S
cvs rdiff -r1.3 -r1.4 syssrc/sys/arch/evbarm/iq80321/iq80321_start.S
cvs rdiff -r1.4 -r1.5 syssrc/sys/arch/evbarm/stand/gzboot/srtbegin.S
cvs rdiff -r1.5 -r1.6 syssrc/sys/arch/hpcarm/hpcarm/locore.S
cvs rdiff -r1.6 -r1.7 syssrc/sys/arch/netwinder/netwinder/nwmmu.S
cvs rdiff -r1.1 -r1.2 syssrc/sys/arch/shark/isa/isa_irq.S

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