|  | /* | 
|  | * -*- 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 |