⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 genint.c

📁 代码有点长,需细心阅读,仅供影音视听类产品的开发人员参考
💻 C
字号:
#include "config.h"
#include "global.h"
#include "regmap.h"
#include "memmap.h"
#include "avd.h"
#include "dma.h"
#include "func.h"
#include "sio.h"
#include "epp.h"
#include "cpu.h"
#include "fifo.h"
#include "intdef.h"
#include "stc.h"
#include "uart.h"
#include "vpp.h"
#include "fs9660.h"

//#define   VERBOSE

#ifndef SIMULATION_FAST
//#define   MONE_INTR
#endif

#if 0
#ifdef  MONE_INTR
#define INTR_epp_write(x)   epp_write(x)
#else
#define INTR_epp_write(x)   (void)0
#endif
#endif
void exception_panic(void)
{
#if 0
    UINT32  REG;

    // epp_write_wait("EXCEPTION PANIC\n");

    asm volatile ("mfc0 $16, $12; nop; move %0, $16":"=r" (REG)::"$16");

    // psprintf(linebuf, "STATUS %08x\n", REG);
    //epp_write_wait(linebuf);

    asm volatile ("mfc0 $16, $13; nop; move %0, $16":"=r" (REG)::"$16");

    //psprintf(linebuf, "CAUSE  %08x %s\n", REG, exception_list[(REG&0x3c)>>2]);
    // epp_write_wait(linebuf);

    asm volatile ("mfc0 $16, $14; nop; move %0, $16":"=r" (REG)::"$16");

    // psprintf(linebuf, "EPC    %08x\n", REG);
    //epp_write_wait(linebuf);

    asm volatile ("mfc0 $16, $8; nop; move %0, $16":"=r" (REG)::"$16");

    //psprintf(linebuf, "BadVA %08x\n", REG);
    //epp_write_wait(linebuf);

#if 1
    asm volatile ("move %0, $29":"=r" (REG));

    //psprintf(linebuf, "SP     %08x\n", REG);
    //epp_write_wait(linebuf);
#endif

    //psprintf(linebuf, "INTRF  %08x\n", regs0->intr_status);
    //epp_write_wait(linebuf);

    while(1)
        regs0->stamp = 0xdead;
#endif
}

/*
**
*/

/*
**
*/

void intr_decerr(void)
{
    //epp_write("DECERR\n");
    //psprintf(linebuf, "decode $%x parsing $%x\n", picture_decoding_entry, picture_parsing_entry);
    //epp_write(linebuf);
    //psprintf(linebuf, "vbv_y $%x  barrier $%x\n", vbv_y, video_parsing_barrier);
    //epp_write(linebuf);
    //psprintf(linebuf, "VLD status %04x\n", regs0->vld_status);
    //epp_write(linebuf);
}


/*
**
*/
void intr_pic_end(void)
{
    /*
     ** update barrier
     */
#if 0
//  int barrier = video_parsing_barrier;
//  if (!IsRPicStart)
    if(!IsRPicStart && IsVPicEnd)   /* no-picture-pending.. */
        video_parsing_barrier = video_parsing_barrier_saved;
#endif
#if 0
    {
        char    lbuf[64];

        psprintf(lbuf, "\t\t\t\t\t\t\tPICEND %04x %04x\n",
                         video_parsing_barrier, barrier);
        epp_write(lbuf);
    }
#endif
}

/*
**
*/
void intr_field_end(void)
{
    /*
     ** Update VPP register
     **
     ** Caution : please do not fill too much code here, long executive time in
     **           interrupt sub-routine will lead to some error condition.
     **
     */
    #if CONFIG == CONFIG_COMBO_SVCD
    int     abnormal_play;
    #endif
    UINT16  pic_wait_time;

    if(!MENU_SLIST() && !MENU_PSEG())   /*selection list or segement don't need,or Menu disappear */
    {
        //charles 2002/4/22 for stop -> no logo problem
        if(!IsRPicStart && !IsVPicEnd /*&& (show_logo==0) */ )
        {
            pic_end_count++;
            if(adv_search_time != 0)
                pic_wait_time = 180;
            else
                pic_wait_time = 60;
            if(pic_end_count > pic_wait_time)
            {                                                   // FW/BW need 60 (1 second) // stop->logo 20 (1/3 second)
                // maybe we need to set a variable to distinguish them...
                regs0->vld_ctrl = 1;
                regs0->vld_ctrl = 0;
                pic_end_count = 0;
                if(IsAVDRealTime())
		{
			regs0->reset = 0x30;
 	       		regs0->reset = 0;
		}
            }
        }
        else
            pic_end_count = 0;
    }

    if(vpp_disable_video)
        return;

#ifdef SUPPORT_OGT
	Intr_Decode_OGT();
#endif

#if  VIDEO_COMPRESS==MEM_411666
    // SNR improvement
    if((play_hires ==1) || ((gettrkcna(cd_trk_now)&0x40)==0))
    {                                       /*氨

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -