| /* | 
 |  * -*- mode:c -*- | 
 |  * | 
 |  * (C) Copyright 2000 | 
 |  * Marius Groeger <mgroeger@sysgo.de> | 
 |  * Sysgo Real-Time Solutions, GmbH <www.elinos.com> | 
 |  * | 
 |  * void ull_write(unsigned long long volatile *address, | 
 |  *                unsigned long long volatile *data) | 
 |  * r3 = address | 
 |  * r4 = data | 
 |  * | 
 |  * void ull_read(unsigned long long volatile *address, | 
 |  *                unsigned long long volatile *data) | 
 |  * r3 = address | 
 |  * r4 = data | 
 |  * | 
 |  * Uses the floating point unit to read and write 64 bit wide | 
 |  * data (unsigned long long) on the 60x bus. This is necessary | 
 |  * because all 4 flash chips use the /WE line from byte lane 0 | 
 |  * | 
 |  * IMPORTANT: data should always be 8-aligned, otherwise an exception will | 
 |  * occur. | 
 |  */ | 
 |  | 
 | #include <ppc_asm.tmpl> | 
 | #include <ppc_defs.h> | 
 |  | 
 | 	.globl	ull_write | 
 | ull_write: | 
 | 	lfd		0,0(r4) | 
 | 	stfd	0,0(r3) | 
 | 	blr | 
 |  | 
 | 	.globl	ull_read | 
 | ull_read: | 
 | 	lfd		0, 0(r3) | 
 | 	stfd	0, 0(r4) | 
 | 	blr |