亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? aha152x.c

?? 內(nèi)核是系統(tǒng)的心臟
?? C
?? 第 1 頁 / 共 5 頁
字號:
#if defined(DEBUG_DATAO)
            printk("data_count=%d, ", data_count);
#endif
  
            if(data_count == 1)
              {
                /* put a single byte in byte mode */
                SETBITS(DMACNTRL0, _8BIT );
                SETPORT(DATAPORT, *current_SC->SCp.ptr++);
                current_SC->SCp.this_residual--;
              }
            else
              {
                CLRBITS(DMACNTRL0, _8BIT );
                data_count >>= 1; /* Number of words */
                outsw( DATAPORT, current_SC->SCp.ptr, data_count );
                current_SC->SCp.ptr           += 2 * data_count;
                current_SC->SCp.this_residual -= 2 * data_count;
              }

            /* wait for FIFO to get empty */
            while( TESTLO ( DMASTAT, DFIFOEMP|INTSTAT ) )
              ;

#if defined(DEBUG_DATAO)
            printk("fifo (%d bytes), transfered (%d bytes), ",
                   GETPORT(FIFOSTAT), GETSTCNT() );
#endif

            /* if this buffer is empty and there are more buffers left */
            if ( TESTLO( SSTAT1, PHASEMIS ) &&
                 !current_SC->SCp.this_residual &&
                  current_SC->SCp.buffers_residual)
              {
                 /* advance to next buffer */
                 current_SC->SCp.buffers_residual--;
                 current_SC->SCp.buffer++;
                 current_SC->SCp.ptr =
                   current_SC->SCp.buffer->address;
                 current_SC->SCp.this_residual =
                 current_SC->SCp.buffer->length;
              }
          }

        if ( current_SC->SCp.this_residual ||
             current_SC->SCp.buffers_residual )
          {
            /* target leaves DATA OUT for an other phase
               (perhaps disconnect) */

            /* data in fifos has to be resend */
            data_count = GETPORT(SSTAT2) & (SFULL|SFCNT);

            data_count += GETPORT(FIFOSTAT) ;
            current_SC->SCp.ptr           -= data_count;
            current_SC->SCp.this_residual += data_count;
#if defined(DEBUG_DATAO)
            printk("left data (bytes=%d, buffers=%d), fifos (bytes=%d), transfer incomplete, resetting fifo, ",
                   current_SC->SCp.this_residual,
                   current_SC->SCp.buffers_residual,
                   data_count );
#endif
            SETPORT(DMACNTRL0, WRITE_READ|RSTFIFO);
            CLRBITS(SXFRCTL0, SCSIEN|DMAEN );
            CLRBITS(DMACNTRL0, ENDMA);
          }
        else
          {
#if defined(DEBUG_DATAO)
            printk("waiting for SCSI fifo to get empty, ");
#endif
            /* wait for SCSI fifo to get empty */
            while( TESTLO( SSTAT2, SEMPTY ) )
              ;
#if defined(DEBUG_DATAO)
            printk("ok, ");
#endif

#if defined(DEBUG_DATAO)
            printk("left data (bytes=%d, buffers=%d) ",
                   current_SC->SCp.this_residual,
                   current_SC->SCp.buffers_residual);
#endif
            CLRBITS(SXFRCTL0, SCSIEN|DMAEN);

            /* transfer can be considered ended, when SCSIEN reads back zero */
            while( TESTHI( SXFRCTL0, SCSIEN ) )
              ;

            CLRBITS(DMACNTRL0, ENDMA);
          }

#if defined(DEBUG_DATAO) || defined(DEBUG_INTR)
        printk("sent %d data bytes, ", GETSTCNT() );
#endif
      }
      break;

    case P_BUSFREE:                                                /* BUSFREE */
#if defined(DEBUG_RACE)
      leave_driver("(BUSFREE) intr");
#endif
#if defined(DEBUG_PHASES)
      printk("unexpected BUS FREE, ");
#endif
      current_SC->SCp.phase = (current_SC->SCp.phase & ~(P_MASK<<16));

      aha152x_done( DID_ERROR << 16 );               /* Don't know any better */
      return;
      break;

    case P_PARITY:                              /* parity error in DATA phase */
#if defined(DEBUG_RACE)
      leave_driver("(DID_PARITY) intr");
#endif
      printk("PARITY error in DATA phase, ");

      current_SC->SCp.phase = (current_SC->SCp.phase & ~(P_MASK<<16));

      SETBITS( DMACNTRL0, INTEN );
      aha152x_done( DID_PARITY << 16 );
      return;
      break;

    default:
      printk("aha152x: unexpected phase\n");
      break;
    }

  if(done)
    {
#if defined(DEBUG_INTR)
      printk("command done.\n");
#endif
#if defined(DEBUG_RACE)
      leave_driver("(done) intr");
#endif

      SETPORT(SIMODE0, disconnected_SC ? ENSELDI : 0 );
      SETPORT(SIMODE1, issue_SC ? ENBUSFREE : 0);
      SETPORT( SCSISEQ, disconnected_SC ? ENRESELI : 0 );

      SETBITS( DMACNTRL0, INTEN );

      aha152x_done(   (current_SC->SCp.Status  & 0xff)
                    | ( (current_SC->SCp.Message & 0xff) << 8)
                    | ( DID_OK << 16) );

#if defined(DEBUG_RACE)
      printk("done returned (DID_OK: Status=%x; Message=%x).\n",
             current_SC->SCp.Status, current_SC->SCp.Message);
#endif
      return;
    }

  if(current_SC)
    current_SC->SCp.phase |= 1<<16 ;

  SETPORT( SIMODE0, 0 );
  SETPORT( SIMODE1, ENPHASEMIS );
#if defined(DEBUG_INTR)
  disp_enintr();
#endif
#if defined(DEBUG_RACE)
  leave_driver("(PHASEEND) intr");
#endif

  SETBITS( DMACNTRL0, INTEN);
  return;
}

/* 
 * Dump the current driver status and panic...
 */
static void aha152x_panic(char *msg)
{
  printk("\naha152x_panic: %s\n", msg);
  show_queues();
  panic("aha152x panic");
}

/*
 * Display registers of AIC-6260
 */
static void disp_ports(void)
{
#if !defined(SKIP_PORTS)
  int s;

  printk("\n%s: ", current_SC ? "on bus" : "waiting");

  s=GETPORT(SCSISEQ);
  printk("SCSISEQ ( ");
  if( s & TEMODEO )     printk("TARGET MODE ");
  if( s & ENSELO )      printk("SELO ");
  if( s & ENSELI )      printk("SELI ");
  if( s & ENRESELI )    printk("RESELI ");
  if( s & ENAUTOATNO )  printk("AUTOATNO ");
  if( s & ENAUTOATNI )  printk("AUTOATNI ");
  if( s & ENAUTOATNP )  printk("AUTOATNP ");
  if( s & SCSIRSTO )    printk("SCSIRSTO ");
  printk(");");

  printk(" SCSISIG ( ");
  s=GETPORT(SCSISIG);
  switch(s & P_MASK)
    {
    case P_DATAO:
      printk("DATA OUT");
      break;
    case P_DATAI:
      printk("DATA IN");
      break;
    case P_CMD:
      printk("COMMAND"); 
      break;
    case P_STATUS:
      printk("STATUS"); 
      break;
    case P_MSGO:
      printk("MESSAGE OUT");
      break;
    case P_MSGI:
      printk("MESSAGE IN");
      break;
    default:
      printk("*illegal*");
      break;
    }
  
  printk(" ); ");

  printk("INTSTAT ( %s ); ", TESTHI(DMASTAT, INTSTAT) ? "hi" : "lo");

  printk("SSTAT ( ");
  s=GETPORT(SSTAT0);
  if( s & TARGET )   printk("TARGET ");
  if( s & SELDO )    printk("SELDO ");
  if( s & SELDI )    printk("SELDI ");
  if( s & SELINGO )  printk("SELINGO ");
  if( s & SWRAP )    printk("SWRAP ");
  if( s & SDONE )    printk("SDONE ");
  if( s & SPIORDY )  printk("SPIORDY ");
  if( s & DMADONE )  printk("DMADONE ");

  s=GETPORT(SSTAT1);
  if( s & SELTO )     printk("SELTO ");
  if( s & ATNTARG )   printk("ATNTARG ");
  if( s & SCSIRSTI )  printk("SCSIRSTI ");
  if( s & PHASEMIS )  printk("PHASEMIS ");
  if( s & BUSFREE )   printk("BUSFREE ");
  if( s & SCSIPERR )  printk("SCSIPERR ");
  if( s & PHASECHG )  printk("PHASECHG ");
  if( s & REQINIT )   printk("REQINIT ");
  printk("); ");


  printk("SSTAT ( ");

  s=GETPORT(SSTAT0) & GETPORT(SIMODE0);

  if( s & TARGET )    printk("TARGET ");
  if( s & SELDO )     printk("SELDO ");
  if( s & SELDI )     printk("SELDI ");
  if( s & SELINGO )   printk("SELINGO ");
  if( s & SWRAP )     printk("SWRAP ");
  if( s & SDONE )     printk("SDONE ");
  if( s & SPIORDY )   printk("SPIORDY ");
  if( s & DMADONE )   printk("DMADONE ");

  s=GETPORT(SSTAT1) & GETPORT(SIMODE1);

  if( s & SELTO )     printk("SELTO ");
  if( s & ATNTARG )   printk("ATNTARG ");
  if( s & SCSIRSTI )  printk("SCSIRSTI ");
  if( s & PHASEMIS )  printk("PHASEMIS ");
  if( s & BUSFREE )   printk("BUSFREE ");
  if( s & SCSIPERR )  printk("SCSIPERR ");
  if( s & PHASECHG )  printk("PHASECHG ");
  if( s & REQINIT )   printk("REQINIT ");
  printk("); ");

  printk("SXFRCTL0 ( ");

  s=GETPORT(SXFRCTL0);
  if( s & SCSIEN )    printk("SCSIEN ");
  if( s & DMAEN )     printk("DMAEN ");
  if( s & CH1 )       printk("CH1 ");
  if( s & CLRSTCNT )  printk("CLRSTCNT ");
  if( s & SPIOEN )    printk("SPIOEN ");
  if( s & CLRCH1 )    printk("CLRCH1 ");
  printk("); ");

  printk("SIGNAL ( ");

  s=GETPORT(SCSISIG);
  if( s & ATNI )  printk("ATNI ");
  if( s & SELI )  printk("SELI ");
  if( s & BSYI )  printk("BSYI ");
  if( s & REQI )  printk("REQI ");
  if( s & ACKI )  printk("ACKI ");
  printk("); ");

  printk("SELID ( %02x ), ", GETPORT(SELID) );

  printk("SSTAT2 ( ");

  s=GETPORT(SSTAT2);
  if( s & SOFFSET)  printk("SOFFSET ");
  if( s & SEMPTY)   printk("SEMPTY ");
  if( s & SFULL)    printk("SFULL ");
  printk("); SFCNT ( %d ); ", s & (SFULL|SFCNT) );

#if 0
  printk("SSTAT4 ( ");
  s=GETPORT(SSTAT4);
  if( s & SYNCERR)   printk("SYNCERR ");
  if( s & FWERR)     printk("FWERR ");
  if( s & FRERR)     printk("FRERR ");
  printk("); ");
#endif

  printk("FCNT ( %d ); ", GETPORT(FIFOSTAT) );

  printk("DMACNTRL0 ( ");
  s=GETPORT(DMACNTRL0);
  printk( "%s ", s & _8BIT      ? "8BIT"  : "16BIT" );
  printk( "%s ", s & DMA        ? "DMA"   : "PIO"   );
  printk( "%s ", s & WRITE_READ ? "WRITE" : "READ"  );
  if( s & ENDMA )    printk("ENDMA ");
  if( s & INTEN )    printk("INTEN ");
  if( s & RSTFIFO )  printk("RSTFIFO ");
  if( s & SWINT )    printk("SWINT ");
  printk("); ");


#if 0
  printk("DMACNTRL1 ( ");

  s=GETPORT(DMACNTRL1);
  if( s & PWRDWN )    printk("PWRDN ");
  printk("); ");


  printk("STK ( %d ); ", s & 0xf);

  printk("DMASTAT (");
  s=GETPORT(DMASTAT);
  if( s & ATDONE )     printk("ATDONE ");
  if( s & WORDRDY )    printk("WORDRDY ");
  if( s & DFIFOFULL )  printk("DFIFOFULL ");
  if( s & DFIFOEMP )   printk("DFIFOEMP ");
  printk(")");

#endif

  printk("\n");
#endif
}

/*
 * display enabled interrupts
 */
static void disp_enintr(void)
{
  int s;

  printk("enabled interrupts ( ");
  
  s=GETPORT(SIMODE0);
  if( s & ENSELDO )    printk("ENSELDO ");
  if( s & ENSELDI )    printk("ENSELDI ");
  if( s & ENSELINGO )  printk("ENSELINGO ");
  if( s & ENSWRAP )    printk("ENSWRAP ");
  if( s & ENSDONE )    printk("ENSDONE ");
  if( s & ENSPIORDY )  printk("ENSPIORDY ");
  if( s & ENDMADONE )  printk("ENDMADONE ");

  s=GETPORT(SIMODE1);
  if( s & ENSELTIMO )    printk("ENSELTIMO ");
  if( s & ENATNTARG )    printk("ENATNTARG ");
  if( s & ENPHASEMIS )   printk("ENPHASEMIS ");
  if( s & ENBUSFREE )    printk("ENBUSFREE ");
  if( s & ENSCSIPERR )   printk("ENSCSIPERR ");
  if( s & ENPHASECHG )   printk("ENPHASECHG ");
  if( s & ENREQINIT )    printk("ENREQINIT ");
  printk(")\n");
}

#if defined(DEBUG_RACE)

static const char *should_leave;
static int in_driver=0;

/*
 * Only one routine can be in the driver at once.
 */
static void enter_driver(const char *func)
{
  cli();
  printk("aha152x: entering %s() (%x)\n", func, jiffies);
  if(in_driver)
    {
      printk("%s should leave first.\n", should_leave);
      panic("aha152x: already in driver\n");
    }

  in_driver++;
  should_leave=func;
  sti();
}

static void leave_driver(const char *func)
{
  cli();
  printk("\naha152x: leaving %s() (%x)\n", func, jiffies);
  if(!in_driver)
    {
      printk("aha152x: %s already left.\n", should_leave);
      panic("aha152x: %s already left driver.\n");
    }

  in_driver--;
  should_leave=func;
  sti();
}
#endif

/*
 * Show the command data of a command
 */
static void show_command(Scsi_Cmnd *ptr)
{
  int i;

  printk("0x%08x: target=%d; lun=%d; cmnd=( ",
         (unsigned long) ptr, ptr->target, ptr->lun);
  
  for(i=0; i<COMMAND_SIZE(ptr->cmnd[0]); i++)
    printk("%02x ", ptr->cmnd[i]);

  printk("); residual=%d; buffers=%d; phase |",
         ptr->SCp.this_residual, ptr->SCp.buffers_residual);

  if( ptr->SCp.phase & not_issued   )  printk("not issued|");
  if( ptr->SCp.phase & in_selection )  printk("in selection|");
  if( ptr->SCp.phase & disconnected )  printk("disconnected|");
  if( ptr->SCp.phase & aborted      )  printk("aborted|");
  if( ptr->SCp.phase & sent_ident   )  printk("send_ident|");
  if( ptr->SCp.phase & in_other )
    { 
      printk("; in other(");
      switch( (ptr->SCp.phase >> 16) & P_MASK )
        {
        case P_DATAO:
          printk("DATA OUT");
          break;
        case P_DATAI:
          printk("DATA IN");
          break;
        case P_CMD:
          printk("COMMAND");
        

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品三级av| 国产日韩欧美a| 9人人澡人人爽人人精品| 五月天久久比比资源色| 国产精品成人免费在线| 日韩午夜av一区| 欧美色区777第一页| 成人综合婷婷国产精品久久蜜臀 | 亚洲人成在线播放网站岛国| 91精品国产麻豆国产自产在线 | 亚洲成人资源在线| 欧美经典三级视频一区二区三区| 欧美一级二级在线观看| 91久久国产最好的精华液| 国产盗摄女厕一区二区三区| 婷婷开心久久网| 一区二区成人在线| 亚洲欧美日韩国产另类专区| 欧美国产日本韩| 久久综合色8888| 日韩欧美一区在线观看| 欧美精品xxxxbbbb| 欧美日韩中文一区| 日本精品一级二级| 99久久婷婷国产| 成人动漫在线一区| 国产成人综合精品三级| 国产在线播精品第三| 日韩高清一区在线| 偷窥少妇高潮呻吟av久久免费| 亚洲一区二区中文在线| 亚洲乱码中文字幕| 亚洲精品高清在线观看| 亚洲精品视频在线看| 日韩毛片高清在线播放| 亚洲蜜桃精久久久久久久| 亚洲精品日韩一| 一区二区三区在线观看视频| 亚洲美女免费视频| 亚洲午夜免费视频| 五月天网站亚洲| 欧美日韩视频在线一区二区| 日本一区二区三级电影在线观看| 欧美日韩在线播放| 久久久精品欧美丰满| 亚洲第一福利一区| 亚洲美女淫视频| 亚洲大型综合色站| 日本韩国一区二区三区视频| 欧美mv日韩mv国产网站app| 激情综合亚洲精品| 91精品国产麻豆| 狂野欧美性猛交blacked| 欧美日韩一区二区三区四区| 亚洲美女屁股眼交| 国内精品不卡在线| 中文字幕不卡在线| 中文字幕一区二区视频| 色综合久久99| 欧美特级限制片免费在线观看| 青青草一区二区三区| 国产日本一区二区| 日韩欧美国产综合一区 | 亚洲电影视频在线| 欧美一区二区人人喊爽| 亚洲国产日韩a在线播放性色| www日韩大片| 日本韩国精品一区二区在线观看| 欧美日韩在线精品一区二区三区激情| 日韩电影在线免费| 欧美电影一区二区三区| 成人免费毛片app| 日韩国产在线一| 大胆亚洲人体视频| 欧美电影免费观看完整版| 51久久夜色精品国产麻豆| 国产黄色成人av| 国产精品正在播放| 国产女主播视频一区二区| 日韩电影在线观看一区| 91.xcao| 久久精品欧美一区二区三区麻豆| 亚洲三级小视频| 一区二区在线观看免费| 国产剧情在线观看一区二区| 国产一区二区中文字幕| 色欧美日韩亚洲| 亚洲日本欧美天堂| 欧美一级淫片007| 91精品蜜臀在线一区尤物| 国产福利91精品一区二区三区| 午夜视频在线观看一区二区三区| 国产v综合v亚洲欧| 日韩一二在线观看| 99视频精品在线| 26uuu国产在线精品一区二区| 欧美日韩综合不卡| 欧美一级夜夜爽| 日本午夜精品一区二区三区电影| 91亚洲永久精品| 另类小说综合欧美亚洲| 日韩欧美久久一区| 国产毛片精品国产一区二区三区| 69堂成人精品免费视频| 免费成人av在线播放| 337p亚洲精品色噜噜狠狠| 欧美日韩国产精选| 日本精品一区二区三区高清| 色综合中文字幕国产| 久久综合久久综合久久| 精品乱人伦小说| 婷婷夜色潮精品综合在线| 在线观看亚洲成人| 亚洲成人在线免费| 日韩av高清在线观看| 91色视频在线| 欧美一二三区在线| 大白屁股一区二区视频| 亚洲成人av资源| 中文字幕一区二区在线观看| 一本一道综合狠狠老| 国产欧美日韩在线观看| 国产剧情一区在线| 日韩一区和二区| 欧美三级电影网站| 91国模大尺度私拍在线视频| 丝袜美腿亚洲一区二区图片| 国产精品日日摸夜夜摸av| 不卡的av在线播放| 亚洲欧美日韩一区| a美女胸又www黄视频久久| www.欧美日韩国产在线| 国内精品久久久久影院色| 国产麻豆成人传媒免费观看| 精品国偷自产国产一区| 色一情一乱一乱一91av| 成人动漫一区二区在线| 国产成人免费视频网站| 欧美成人精品二区三区99精品| 欧美高清视频不卡网| 欧美高清在线精品一区| 久久在线观看免费| 91精品视频网| 中文文精品字幕一区二区| 精品av综合导航| 久久亚洲影视婷婷| 久久久国产精品麻豆| 色婷婷av久久久久久久| 亚洲欧美另类久久久精品| 亚洲国产一区二区三区青草影视| 亚洲午夜电影网| 欧美精品xxxxbbbb| 亚洲视频狠狠干| 亚洲一区二区中文在线| 久久99九九99精品| 亚洲精品欧美综合四区| eeuss国产一区二区三区| 黄页网站大全一区二区| 成人福利电影精品一区二区在线观看| 亚洲一区二区三区四区在线观看 | 国产999精品久久久久久| 激情综合色播激情啊| hitomi一区二区三区精品| 欧美日韩黄色一区二区| 欧美午夜精品一区| 久久国产精品99久久人人澡| 一本色道a无线码一区v| 一区二区三区中文字幕精品精品 | 成人美女视频在线观看| 国产一区日韩二区欧美三区| 日本vs亚洲vs韩国一区三区二区| 久久久久久99精品| 国产日韩欧美不卡| 婷婷综合五月天| 国产精品午夜在线观看| 亚洲午夜久久久久久久久电影网 | 欧美一二三四在线| 欧美伊人久久大香线蕉综合69| 一区二区三区不卡在线观看| 国产盗摄女厕一区二区三区| 一二三四区精品视频| 亚洲一区二区三区爽爽爽爽爽| 欧美国产精品久久| 97精品超碰一区二区三区| 91久久国产综合久久| 欧美电影免费观看高清完整版在线 | 白白色 亚洲乱淫| 国产99久久久精品| 一区二区三区四区亚洲| 99久久免费视频.com| 日韩三级视频中文字幕| 欧美精品在线一区二区三区| 成人激情午夜影院| 色吊一区二区三区| 国产精品成人在线观看| 狠狠色丁香婷婷综合| 亚洲精品视频在线观看网站| 视频在线在亚洲| 欧美日韩一区视频| 国产精品羞羞答答xxdd|