blob: 6b0d76c443ca653d10992b0ec19ad6e3166230a7 [file] [log] [blame]
#ifndef VIDDEC_FW_DEBUG_H
#define VIDDEC_FW_DEBUG_H
//#define SWAP_BYTE(x,y,z) (( ( (x)>>(8*y))& 0xFF) << (8*z))
#define SWAP_BYTE(x,y,z) (( ( (x) >> ((y) << 3))& 0xFF) << ((z) << 3))
#define SWAP_WORD(x) ( SWAP_BYTE((x),0,3) | SWAP_BYTE((x),1,2) |SWAP_BYTE((x),2,1) |SWAP_BYTE((x),3,0))
#ifndef VBP
#ifndef HOST_ONLY
#define _OSAL_IO_MEMMAP_H /* to prevent errors when including sven_devh.h */
#define _OSAL_ASSERT_H /* to prevent errors when including sven_devh.h */
#endif
#include <stdint.h>
#include "viddec_debug.h"
#include "sven_devh.h"
#include "auto_eas/gen4_gv.h"
#ifdef HOST_ONLY
#define DUMP_TO_MEM(x) DEB("0x%.08X ",x);
#define WRITE_SVEN(event, p1, p2, p3, p4, p5, p6) DEB("Sven evnt=0x%.8X p1=%d p2=%d p3=%d p4=%d p5=%d p6=%d\n",event, p1, p2, p3, p4, p5, p6)
#define read_ret(x)
#define read_fp(x)
#define read_sp(x)
#define read_wim(x)
#define read_psr(x)
#else
extern uint32_t dump_ptr;
/* Macros for Dumping data to DDR */
#define DUMP_TO_MEM(x) ((volatile unsigned int *)0x8F000000)[dump_ptr++] = SWAP_WORD(x);
#define read_ret(x) asm("mov %%i7, %0\n":"=r" (x))
#define read_fp(x) asm("mov %%i6, %0\n":"=r" (x))
#define read_sp(x) asm("mov %%sp, %0\n":"=r" (x))
#define read_wim(x) asm("mov %%wim, %0\n":"=r" (x))
#define read_psr(x) asm("mov %%psr, %0\n":"=r" (x))
#define WRITE_SVEN(event, p1, p2, p3, p4, p5, p6) devh_SVEN_WriteModuleEvent( NULL, event, p1, p2, p3, p4, p5, p6)
#endif
#else // VBP is defined
#include <stdint.h>
#include "viddec_debug.h"
#define DUMP_TO_MEM(x)
#define WRITE_SVEN(event, p1, p2, p3, p4, p5, p6)
#define read_ret(x)
#define read_fp(x)
#define read_sp(x)
#define read_wim(x)
#define read_psr(x)
#endif
static inline void DEBUG_WRITE(uint32_t p1, uint32_t p2, uint32_t p3, uint32_t p4, uint32_t p5, uint32_t p6)
{
//uint32_t temp;
DUMP_TO_MEM(0xCACAFEED);
DUMP_TO_MEM(p1);
DUMP_TO_MEM(p2);
DUMP_TO_MEM(p3);
DUMP_TO_MEM(p4);
DUMP_TO_MEM(p5);
DUMP_TO_MEM(p6);
DUMP_TO_MEM(0xCACA0000);
//temp = dump_ptr;
//DUMP_TO_MEM(temp);
}
static inline void DUMP_SPARC_REG(void)
{
uint32_t ret1, fp, sp, wim, psr;
read_ret(ret1);
read_fp(fp);
read_sp(sp);
read_wim(wim);
read_psr(psr);
//crash = (uint32_t *)0x1000bf0c;
//DEBUG_WRITE(sp, wim, fp, ret1, (*crash), 0xFED);
DEBUG_WRITE(sp, wim, fp, ret1, psr, 0xFFFFFFFF);
}
#endif