40 lines
873 B
C
40 lines
873 B
C
/*
|
|
* -*- 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
|