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