VirtualBox

儲存庫 vbox 的更動 55010


忽略:
時間撮記:
2015-3-30 下午04:33:39 (10 年 以前)
作者:
vboxsync
訊息:

PDM/DevSB16.cpp: Crash fix, formatting.

檔案:
修改 1 筆資料

圖例:

未更動
新增
刪除
  • trunk/src/VBox/Devices/Audio/DevSB16.cpp

    r55009 r55010  
    189189    int use_hdma;
    190190    int highspeed;
    191     int can_write; /** @Todo Value never gets 0? */
     191    int can_write; /** @todo Value never gets 0? */
    192192
    193193    int v2x6;
     
    323323#endif /* VBOX_WITH_PDM_AUDIO_DRIVER */
    324324
    325 static int magic_of_irq (int irq)
     325static int magic_of_irq(int irq)
    326326{
    327327    switch (irq)
     
    343343}
    344344
    345 static int irq_of_magic (int magic)
     345static int irq_of_magic(int magic)
    346346{
    347347    switch (magic)
     
    363363}
    364364
    365 #if 0
    366 static void log_dsp (PSB16STATE dsp)
    367 {
    368     ldebug ("%s:%s:%d:%s:dmasize=%d:freq=%d:const=%d:speaker=%d\n",
    369             dsp->fmt_stereo ? "Stereo" : "Mono",
    370             dsp->fmt_signed ? "Signed" : "Unsigned",
    371             dsp->fmt_bits,
    372             dsp->dma_auto ? "Auto" : "Single",
    373             dsp->block_size,
    374             dsp->freq,
    375             dsp->time_const,
    376             dsp->speaker);
     365#ifdef DEBUG
     366static inline void log_dsp(PSB16STATE pThis)
     367{
     368    LogFlowFunc(("%s:%s:%d:%s:dmasize=%d:freq=%d:const=%d:speaker=%d\n",
     369                 pThis->fmt_stereo ? "Stereo" : "Mono",
     370                 pThis->fmt_signed ? "Signed" : "Unsigned",
     371                 pThis->fmt_bits,
     372                 pThis->dma_auto ? "Auto" : "Single",
     373                 pThis->block_size,
     374                 pThis->freq,
     375                 pThis->time_const,
     376                 pThis->speaker));
    377377}
    378378#endif
     
    11471147}
    11481148
    1149 static void reset (PSB16STATE pThis)
     1149static void sb16Reset(PSB16STATE pThis)
    11501150{
    11511151#ifndef VBOX
     
    11811181}
    11821182
    1183 static IO_WRITE_PROTO (dsp_write)
    1184 {
    1185     PSB16STATE pThis = (SB16STATE*)opaque;
     1183static IO_WRITE_PROTO(dsp_write)
     1184{
     1185    PSB16STATE pThis = (PSB16STATE)opaque;
    11861186    int iport = nport - pThis->port;
    11871187
    11881188    LogFlowFunc(("write %#x <- %#x\n", nport, val));
    1189     switch (iport) {
    1190     case 0x06:
    1191         switch (val) {
    1192         case 0x00:
    1193             if (pThis->v2x6 == 1) {
    1194                 if (0 && pThis->highspeed) {
    1195                     pThis->highspeed = 0;
     1189    switch (iport)
     1190    {
     1191        case 0x06:
     1192            switch (val)
     1193            {
     1194                case 0x00:
     1195                {
     1196                    if (pThis->v2x6 == 1)
     1197                    {
     1198                        if (0 && pThis->highspeed)
     1199                        {
     1200                            pThis->highspeed = 0;
    11961201#ifndef VBOX
    1197                     qemu_irq_lower (pThis->pic[pThis->irq]);
    1198 #else
    1199                     PDMDevHlpISASetIrq(pThis->pDevIns, pThis->irq, 0);
    1200 #endif
    1201                     sb16Control(pThis, 0);
     1202                            qemu_irq_lower (pThis->pic[pThis->irq]);
     1203#else
     1204                            PDMDevHlpISASetIrq(pThis->pDevIns, pThis->irq, 0);
     1205#endif
     1206                            sb16Control(pThis, 0);
     1207                        }
     1208                        else
     1209                            sb16Reset(pThis);
     1210                    }
     1211                    pThis->v2x6 = 0;
     1212                    break;
    12021213                }
    1203                 else {
    1204                     reset (pThis);
     1214
     1215                case 0x01:
     1216                case 0x03:              /* FreeBSD kludge */
     1217                    pThis->v2x6 = 1;
     1218                    break;
     1219
     1220                case 0xc6:
     1221                    pThis->v2x6 = 0;    /* Prince of Persia, csp.sys, diagnose.exe */
     1222                    break;
     1223
     1224                case 0xb8:              /* Panic */
     1225                    sb16Reset(pThis);
     1226                    break;
     1227
     1228                case 0x39:
     1229                    dsp_out_data(pThis, 0x38);
     1230                    sb16Reset(pThis);
     1231                    pThis->v2x6 = 0x39;
     1232                    break;
     1233
     1234                default:
     1235                    pThis->v2x6 = val;
     1236                    break;
     1237            }
     1238            break;
     1239
     1240        case 0x0c:                      /* Write data or command | write status */
     1241#if 0
     1242            if (pThis->highspeed)
     1243                break;
     1244#endif
     1245            if (0 == pThis->needed_bytes)
     1246            {
     1247                command(pThis, val);
     1248#if 0
     1249                if (0 == pThis->needed_bytes) {
     1250                    log_dsp (pThis);
     1251                }
     1252#endif
     1253            }
     1254            else
     1255            {
     1256                if (pThis->in_index == sizeof (pThis->in2_data))
     1257                {
     1258                    LogFlowFunc(("in data overrun\n"));
     1259                }
     1260                else
     1261                {
     1262                    pThis->in2_data[pThis->in_index++] = val;
     1263                    if (pThis->in_index == pThis->needed_bytes)
     1264                    {
     1265                        pThis->needed_bytes = 0;
     1266                        complete (pThis);
     1267#if 0
     1268                        log_dsp (pThis);
     1269#endif
     1270                    }
    12051271                }
    12061272            }
    1207             pThis->v2x6 = 0;
    1208             break;
    1209 
    1210         case 0x01:
    1211         case 0x03:              /* FreeBSD kludge */
    1212             pThis->v2x6 = 1;
    1213             break;
    1214 
    1215         case 0xc6:
    1216             pThis->v2x6 = 0;        /* Prince of Persia, csp.sys, diagnose.exe */
    1217             break;
    1218 
    1219         case 0xb8:              /* Panic */
    1220             reset (pThis);
    1221             break;
    1222 
    1223         case 0x39:
    1224             dsp_out_data (pThis, 0x38);
    1225             reset (pThis);
    1226             pThis->v2x6 = 0x39;
    12271273            break;
    12281274
    12291275        default:
    1230             pThis->v2x6 = val;
    1231             break;
    1232         }
    1233         break;
    1234 
    1235     case 0x0c:                  /* write data or command | write status */
    1236 /*         if (pThis->highspeed) */
    1237 /*             break; */
    1238 
    1239         if (0 == pThis->needed_bytes) {
    1240             command (pThis, val);
    1241 #if 0
    1242             if (0 == pThis->needed_bytes) {
    1243                 log_dsp (pThis);
    1244             }
    1245 #endif
    1246         }
    1247         else {
    1248             if (pThis->in_index == sizeof (pThis->in2_data)) {
    1249                 LogFlowFunc(("in data overrun\n"));
    1250             }
    1251             else {
    1252                 pThis->in2_data[pThis->in_index++] = val;
    1253                 if (pThis->in_index == pThis->needed_bytes) {
    1254                     pThis->needed_bytes = 0;
    1255                     complete (pThis);
    1256 #if 0
    1257                     log_dsp (pThis);
    1258 #endif
    1259                 }
    1260             }
    1261         }
    1262         break;
    1263 
    1264     default:
    1265         LogFlowFunc(("nport=%#x, val=%#x)\n", nport, val));
    1266         break;
     1276            LogFlowFunc(("nport=%#x, val=%#x)\n", nport, val));
     1277            break;
    12671278    }
    12681279
     
    12721283}
    12731284
    1274 static IO_READ_PROTO (dsp_read)
    1275 {
    1276     PSB16STATE pThis = (SB16STATE*)opaque;
     1285static IO_READ_PROTO(dsp_read)
     1286{
     1287    PSB16STATE pThis = (PSB16STATE)opaque;
    12771288    int iport, retval, ack = 0;
    12781289
     
    14291440static IO_WRITE_PROTO(mixer_write_indexb)
    14301441{
    1431     PSB16STATE pThis = (SB16STATE*)opaque;
     1442    PSB16STATE pThis = (PSB16STATE)opaque;
    14321443    (void) nport;
    14331444    pThis->mixer_nreg = val;
     
    15931604    mixer_write_datab (opaque, nport, (val >> 8) & 0xff);
    15941605#else  /* VBOX */
    1595     PSB16STATE pThis = (SB16STATE*)opaque;
     1606    PSB16STATE pThis = (PSB16STATE)opaque;
    15961607    int iport = nport - pThis->port;
    15971608    switch (cb)
     
    16221633static IO_READ_PROTO(mixer_read)
    16231634{
    1624     PSB16STATE pThis = (SB16STATE*)opaque;
     1635    PSB16STATE pThis = (PSB16STATE)opaque;
    16251636
    16261637    (void) nport;
     
    20972108    pThis->csp_regs[9] = 0xf8;
    20982109
    2099     sb16MixerReset (pThis);
     2110    sb16MixerReset(pThis);
    21002111    pThis->aux_ts = qemu_new_timer (vm_clock, aux_timer, s);
    21012112    if (!pThis->aux_ts) {
     
    23412352    pThis->csp_regs[9]             = 0xf8;
    23422353
     2354#ifdef VBOX_WITH_PDM_AUDIO_DRIVER
     2355    RTListInit(&pThis->lstDrv);
     2356#endif /* VBOX_WITH_PDM_AUDIO_DRIVER */
     2357
    23432358    sb16MixerReset(pThis);
    23442359
     
    23942409     */
    23952410#ifdef VBOX_WITH_PDM_AUDIO_DRIVER
    2396     RTListInit(&pThis->lstDrv);
    2397 
    23982411    uint8_t uLUN;
    23992412    for (uLUN = 0; uLUN < UINT8_MAX; uLUN)
注意: 瀏覽 TracChangeset 來幫助您使用更動檢視器

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette