filename | src/maple/maple.c |
changeset | 1:eea311cfd33e |
next | 2:42349f6ea216 |
author | nkeynes |
date | Sat Mar 13 00:03:32 2004 +0000 (19 years ago) |
permissions | -rw-r--r-- |
last change | This commit was generated by cvs2svn to compensate for changes in r2, which included commits to RCS files with non-trunk default branches. |
file | annotate | diff | log | raw |
nkeynes@1 | 1 | #include <assert.h> |
nkeynes@1 | 2 | #include "dream.h" |
nkeynes@1 | 3 | #include "mem.h" |
nkeynes@1 | 4 | #include "asic.h" |
nkeynes@1 | 5 | #include "maple.h" |
nkeynes@1 | 6 | |
nkeynes@1 | 7 | void maple_handle_buffer( uint32_t address ) { |
nkeynes@1 | 8 | uint32_t *buf = (uint32_t *)mem_get_region(address); |
nkeynes@1 | 9 | if( buf == NULL ) { |
nkeynes@1 | 10 | ERROR( "Invalid or unmapped buffer passed to maple (0x%08X)", address ); |
nkeynes@1 | 11 | } else { |
nkeynes@1 | 12 | int last, port, length, cmd, recv_addr, send_addr, add_length; |
nkeynes@1 | 13 | int i = 0; |
nkeynes@1 | 14 | do { |
nkeynes@1 | 15 | last = buf[i]>>31; /* indicates last packet */ |
nkeynes@1 | 16 | port = (buf[i]>>16)&0x03; |
nkeynes@1 | 17 | length = buf[i]&0x0F; |
nkeynes@1 | 18 | uint32_t return_address = buf[i+1]; |
nkeynes@1 | 19 | cmd = buf[i+2]&0xFF; |
nkeynes@1 | 20 | recv_addr = (buf[i+2]>>8)&0xFF; |
nkeynes@1 | 21 | send_addr = (buf[i+2]>>16)&0xFF; |
nkeynes@1 | 22 | add_length = (buf[i+2]>>24)&0xFF; |
nkeynes@1 | 23 | char *return_buf = mem_get_region(return_address); |
nkeynes@1 | 24 | |
nkeynes@1 | 25 | } while( !last ); |
nkeynes@1 | 26 | } |
nkeynes@1 | 27 | } |
.