1 /* Copyright (C) 1998, Cygnus Solutions
7 #include "sky-device.h"
11 VectorUnitState vu0_state
;
13 /* these are aligned versions of zalloc() pointers - do not zfree()! */
14 static char* vu0_mem0_buffer
= 0;
15 static char* vu0_mem1_buffer
= 0;
24 vu0_io_read_buffer(device
*me
,
32 if (addr
< VU0_REGISTER_WINDOW_START
)
35 addr
-= VU0_REGISTER_WINDOW_START
;
37 /* Adjust nr_bytes if too big */
38 if ((addr
+ nr_bytes
) > VU_REG_END
)
39 nr_bytes
-= addr
+ nr_bytes
- VU_REG_END
;
41 return read_vu_registers (&vu0_state
, addr
, nr_bytes
, dest
);
45 vu0_io_write_buffer(device
*me
,
53 if (addr
< VU0_REGISTER_WINDOW_START
)
56 addr
-= VU0_REGISTER_WINDOW_START
;
58 /* Adjust nr_bytes if too big */
59 if ((addr
+ nr_bytes
) > VU_REG_END
)
60 nr_bytes
-= addr
+ nr_bytes
- VU_REG_END
;
62 return write_vu_registers (&vu0_state
, addr
, nr_bytes
, source
);
73 vu0_attach(SIM_DESC sd
)
80 VU0_REGISTER_WINDOW_START
,
81 VU_REG_END
/*nr_bytes*/,
86 vu0_mem0_buffer
= zalloc(VU0_MEM0_SIZE
);
87 vu0_mem0_buffer
= (void*) ALIGN_16((unsigned)vu0_mem0_buffer
);
93 VU0_MEM0_WINDOW_START
,
94 VU0_MEM0_SIZE
/*nr_bytes*/,
97 vu0_mem0_buffer
/*buffer*/);
99 vu0_mem1_buffer
= zalloc(VU0_MEM1_SIZE
);
100 vu0_mem1_buffer
= (void*) ALIGN_16((unsigned)vu0_mem1_buffer
);
106 VU0_MEM1_WINDOW_START
,
107 VU0_MEM1_SIZE
/*nr_bytes*/,
110 vu0_mem1_buffer
/*buffer*/);