Annotation of tme/ChangeLog, revision 1.1.1.5

1.1.1.5 ! root        1: Sun Jun 06 20:52:27 2010  Matthew Fredette  <[email protected]>
        !             2: 
        !             3:        * Release 0.8 out.
        !             4: 
        !             5: Sat Jun 05 19:56:37 2010  Matt Fredette  <[email protected]>
        !             6: 
        !             7:        * TODO: Updated. 
        !             8: 
        !             9:        * configure.in: Bumped version to 0.8. 
        !            10: 
        !            11:        * ic/ncr5380.c: Changed or cast various tme_bus_addr_t to
        !            12:        tme_bus_addr32_t.  In struct tme_ncr5380, store an actual TLB entry
        !            13:        instead of a pointer to an allocated entry. 
        !            14:        (_tme_ncr5380_bus_tlb_fill): Replaced the call to tme_bus_tlb_back()
        !            15:        with a plain structure copy. 
        !            16:        (_tme_ncr5380_connection_make_bus): Call tme_bus_device_tlb_set_add()
        !            17:        to add the TLB entry to the connection. 
        !            18: 
        !            19:        * ic/ncr53c9x.c: Changed or cast various tme_bus_addr_t to
        !            20:        tme_bus_addr32_t.  In struct tme_ncr53c9x, store an actual TLB entry
        !            21:        instead of a pointer to an allocated entry.  Added
        !            22:        tme_ncr53c9x_detected_scsi_reset. 
        !            23:        (_tme_ncr53c9x_update): When SCSI RST is first detected, issue a SCSI
        !            24:        reset interrupt if it hasn't been disabled.  In
        !            25:        TME_NCR53C9X_CMD_RESET_BUS, no longer signal a SCSI reset interrupt. 
        !            26:        This will be done when the SCSI RST is detected. 
        !            27:        (_tme_ncr53c9x_callout): Fixed bugs where we wouldn't always wrap the
        !            28:        FIFO head and tail. 
        !            29:        Replaced the call to tme_bus_tlb_back() with a plain structure copy. 
        !            30:        When a SCSI DMA cycle is transferring out to the SCSI bus, only
        !            31:        initially clear the SCSI DMA buffer if DMA is not running - if DMA is
        !            32:        running, and the data FIFO is empty, and the TLB entry doesn't support
        !            33:        fast reading, the code that sets up a transfer into the data FIFO
        !            34:        needs to know how much space is available in the data FIFO starting at
        !            35:        the tail, until the end of the data FIFO.  Also call
        !            36:        _tme_ncr53c9x_fifo_data_update() to update the Current FIFO register. 
        !            37:        (_tme_ncr53c9x_connection_make_bus): Call tme_bus_device_tlb_set_add()
        !            38:        to add the TLB entry to the connection. 
        !            39: 
        !            40:        * ic/z8530.c (_tme_z8530_rr2_update): Now take the single RR3
        !            41:        interrupt bit, or zero, to use for the modified interrupt vector in
        !            42:        RR2. 
        !            43:        (_tme_z8530_int_pending): Now call _tme_z8530_rr2_update() to update
        !            44:        the modified interrupt vector in RR2. 
        !            45:        (_tme_z8530_intack): Fixed a bug where we would accept an interrupt
        !            46:        acknowledge even if the IEI pin was tied low.  Get the vector directly
        !            47:        from the channel B RR2. 
        !            48:        (_tme_z8530_bus_cycle): In TME_Z8530_WR0_CMD_RESET_IUS, no longer call
        !            49:        _tme_z8530_rr2_update().  The eventual interrupt check for
        !            50:        TME_Z8530_CALLOUT_INT will update RR2. 
        !            51: 
        !            52:        * ic/sparc/sparc-fpu.c (tme_sparc_fpu_exception_check): On sparc64,
        !            53:        when the exception is not an ieee754 exception, use the
        !            54:        fp_exception_other trap. 
        !            55: 
        !            56:        * ic/sparc/sparc-impl.h [_TME_SPARC_STATS] [TME_HAVE_RECODE]: Track
        !            57:        the number of recode source hash misses. 
        !            58:        Declare tme_sparc32_recode_insn_current() and
        !            59:        tme_sparc64_recode_insn_current(). 
        !            60:        [!_TME_SPARC_RECODE_VERIFY] tme_sparc_recode_verify_reg_tick_now():
        !            61:        Silence a possible known-nonzero warning. 
        !            62: 
        !            63:        * ic/sparc/sparc-insns-auto.sh: Fixed some comments. 
        !            64: 
        !            65:        * ic/sparc/sparc-misc.c (_tme_sparc_runlength): Added. 
        !            66:        (_tme_sparc_command): Added the run-length and prom-delay-factor
        !            67:        commands. 
        !            68:        (tme_sparc_new): Removed the prom-delay-factor option.  Now call
        !            69:        _tme_sparc_runlength() to set the initial run length. 
        !            70:        (tme_sparc32_external_check): 32-bit SPARCs default to no interrupt
        !            71:        acknowledge cycle. 
        !            72:        (tme_sparc_itlb_current): Fixed pointer arithmetic bugs in the
        !            73:        no-recode case. 
        !            74: 
        !            75:        * ic/sparc/sparc-rc-insns.c: TME_SPARC_RECODE_INSN_LD and
        !            76:        TME_SPARC_RECODE_INSN_ST instructions no longer update the instruction
        !            77:        register.  mulscc only needs the simplest assist. 
        !            78:        (tme_sparc_recode_insn_current): Added. 
        !            79:        (tme_sparc_recode_insn_assist_redispatch): Added a comment about the
        !            80:        PC we check.  Rewritten to prepare for future additional redispatch
        !            81:        conditions. 
        !            82:        (_tme_sparc_recode_insn_assist_full): Fixed a bug where we wouldn't
        !            83:        use TME_SPARC_G0_OFFSET(ic) to find the %g0 to zero. 
        !            84:        (_tme_sparc_recode_recode): Fixed bugs in checking the immediate ASI
        !            85:        of a v9 ld*a instruction for the default unrestricted ASI with the
        !            86:        right endianness. 
        !            87:        Fixed a bug where we would test for the branch target being near or
        !            88:        far after we had possibly updated the displacement.  Fixed various
        !            89:        other bugs in testing control transfer targets for near or far. 
        !            90:        If the second source operand is an immediate zero, make a
        !            91:        TME_RECODE_OPERAND_ZERO instead of a TME_RECODE_OPERAND_IMM. 
        !            92: 
        !            93:        * ic/sparc/sparc-rc-ls.c (_tme_sparc_recode_ls_assist_check): Get the
        !            94:        instruction from ic->_tme_sparc_insn, since the instruction register
        !            95:        isn't updated for assisted loads and stores. 
        !            96:        (_tme_sparc_recode_ls_assist_ld): Use tme_sparc_recode_insn_current()
        !            97:        to get the instruction, and check that the instruction is a load. 
        !            98:        Decode rd from the current instruction, in case it's not the original
        !            99:        recoded instruction.  Zero %g0, in case the load changed it.  Do any
        !           100:        required redispatch after we assisted a nonoriginal load instruction
        !           101:        (or a load instruction that otherwise requires a redispatch). 
        !           102:        (_tme_sparc_recode_ls_assist_st): Use tme_sparc_recode_insn_current()
        !           103:        to get the instruction, and check that the instruction is a store. 
        !           104: 
        !           105:        * ic/sparc/sparc-rc-verify.c (tme_sparc_recode_verify_begin): When
        !           106:        verifying is being turned on, return immediately after calling
        !           107:        tme_sparc_recode_invalidate_all(), since it will leave the current
        !           108:        instructions thunk unrunnable.  Remember the current instruction TLB
        !           109:        token. 
        !           110:        (tme_sparc_recode_verify_end): Unbusy any current instruction TLB
        !           111:        token used by the normal execution.  Before the replay begins,
        !           112:        validate the replay instruction TLB entry When the replay ends, unbusy
        !           113:        and invalidate the current instruction TLB token. 
        !           114:        Added more structure members to ignore.  Before returning to normal
        !           115:        post instructions thunk handling, rebusy any current instruction TLB
        !           116:        entry. 
        !           117:        (_tme_sparc_recode_verify_init): Initialize the replay TLB tokens as
        !           118:        invalid. 
        !           119: 
        !           120:        * ic/sparc/sparc-recode.c (TME_SPARC_RECODE_RW_THUNK_INDEX): Added
        !           121:        missing parentheses around all of the sparc64 load/store features. 
        !           122:        (tme_sparc_recode): Count recode source hash misses. 
        !           123:        (tme_sparc_recode_init): Mark the temporary registers as temporary. 
        !           124:        Increase the size of the thunks memory. 
        !           125: 
        !           126:        * ic/sparc/stp103x.c (_tme_stp103x_rdasr):
        !           127:        (_tme_stp103x_wrasr): Don't return the result of a function that
        !           128:        returns void. 
        !           129:        (_tme_stp103x_ls_address_map_phys): Fixed a bug where we wouldn't map
        !           130:        a bypass ASI as usable by nonprivileged code. 
        !           131:        (_tme_stp103x_ls_address_map): Fixeds where we wouldn't map an address
        !           132:        when the MMU is disabled, or when the mapping is unprivileged, as
        !           133:        usable by both nonprivileged and privileged code. 
        !           134:        (_tme_stp103x_ls_asi_tlb_data_access): Catch an atomic access to a TLB
        !           135:        data access register.  Invalidate any sparc TLB entries when a stp103x
        !           136:        TLB entry is written. 
        !           137:        (_tme_stp103x_tick_compare_th): Now use tme_gettimeofday(). 
        !           138: 
        !           139:        * ic/stp22xx/stp220x.c:
        !           140:        * ic/stp22xx/stp222x-iommu.c:
        !           141:        * ic/stp22xx/stp222x-mdu.c:
        !           142:        * ic/stp22xx/stp222x-stc.c: Silence some unused value warnings. 
        !           143: 
        !           144:        * libtme/misc.c (_tme_misc_number_parse): Fixed a bug where simple
        !           145:        conversion failure wouldn't return an error. 
        !           146:        (tme_misc_cycles_per_ms): Don't sleep while getting the cycle counter
        !           147:        rate, because the cycle counter may run at a different rate when we're
        !           148:        sleeping than when we're running. 
        !           149: 
        !           150:        * libtme/module.c: Undefine lt_preloaded_symbols, in an attempt to be
        !           151:        forward-compatible with newer libltdls than our libtool knows about. 
        !           152: 
        !           153:        * libtme/recode-impl.h: Declare tme_recode_regs_src_notify(). 
        !           154: 
        !           155:        * libtme/recode-regs.c (_tme_recode_regs_src_load):
        !           156:        (tme_recode_regs_src_specific): Check that a reserved host register
        !           157:        doesn't have a guest temporary register.  After loading a guest
        !           158:        temporary register, forget that it's in the host register. 
        !           159:        (tme_recode_regs_src_notify): Added. 
        !           160: 
        !           161:        * libtme/threads-sjlj.c: Renamed _tme_sjlj_gtk_yield() to
        !           162:        tme_sjlj_threads_gtk_yield(). 
        !           163: 
        !           164:        * libtme/host/x86/rc-x86-insns.c (_tme_recode_x86_insn_rw): Call
        !           165:        tme_recode_regs_src_notify() to notify about a possible temporary
        !           166:        register operand for the address, before calling
        !           167:        tme_recode_regs_host_clean_all(). 
        !           168: 
        !           169:        * libtme/host/x86/rc-x86-rws.c (_tme_recode_x86_rw_tlb_ref): Removed. 
        !           170:        (tme_recode_host_rw_thunk_new): Now use the generic support for recode
        !           171:        reads and writes, and the x86 generic TLB support. 
        !           172: 
        !           173:        * machine/sun/sun-cgsix.c (_tme_suncg6_bus_cycle_alt): Fixed a bug
        !           174:        where we wouldn't complete the cycle. 
        !           175:        (tme_sun_cgsix): Added parentheses to silence a paranoid gcc warning
        !           176:        about programmer operator precedence mistakes. 
        !           177: 
        !           178:        * machine/sun/sun-cgtwo.c: Changed or cast various tme_bus_addr_t to
        !           179:        tme_bus_addr32_t.  Now track tokens from TLB entries instead of TLB
        !           180:        entries. 
        !           181: 
        !           182:        * machine/sun/sun-fb.c (tme_sunfb_bus_cycle_transition) [NDEBUG]:
        !           183:        Catch cycle handlers that don't complete the cycle. 
        !           184: 
        !           185:        * machine/sun/sun-obie.c (TME_SUN_OBIE_CSR_GET):
        !           186:        (TME_SUN_OBIE_CSR_PUT): Rewritten to avoid a pointer cast, to silence
        !           187:        strict aliasing warnings. 
        !           188:        (_tme_sun_obie_tlb_set_allocate): Removed. 
        !           189:        (_tme_sun_obie_tlb_set_add): Added. 
        !           190:        (_tme_sun_obie_connections_new): Provide _tme_sun_obie_tlb_set_add()
        !           191:        instead of _tme_sun_obie_tlb_set_allocate(). 
        !           192: 
        !           193:        * machine/sun/sun-si.c: Changed or cast various tme_bus_addr_t to
        !           194:        tme_bus_addr32_t.  Now track tokens from TLB entries instead of TLB
        !           195:        entries. 
        !           196:        (_tme_sun_si_tlb_set_allocate): Removed. 
        !           197:        (_tme_sun_si_tlb_set_add): Added. 
        !           198:        (_tme_sun_si_connections_new): Provide _tme_sun_si_tlb_set_add()
        !           199:        instead of _tme_sun_si_tlb_set_allocate(). 
        !           200: 
        !           201:        * machine/sun4/SUN4-75: Bumped the default idle-type for more recent
        !           202:        NetBSD. 
        !           203: 
        !           204:        * machine/sun4/sun44c-memerr.c (_tme_sun44c_memerr_cycle_control):
        !           205:        (_tme_sun44c_memerr_cycle_bus): Changes to remove aliasing. 
        !           206: 
        !           207:        * machine/sun4u/SUN-ULTRA-1: Bumped the revision of the ledma to 2. 
        !           208:        Moved sd0 to id 0. 
        !           209: 
        !           210:        * tme/memory.h (tme_memory_barrier) [TME_THREADS_COOPERATIVE]: Silence
        !           211:        a possible known-nonzero warning. 
        !           212: 
        !           213:        * tme/threads.h: Declare tme_sjlj_threads_gtk_yield(), and make a
        !           214:        tme_threads_gtk_yield alias. 
        !           215: 
        !           216:        * tme/token.h (_tme_token_busy_change) [TME_THREADS_COOPERATIVE &&
        !           217:        defined(TME_NO_DEBUG_LOCKS)]: Silenced a possible known-unzero
        !           218:        warning. 
        !           219: 
        !           220:        * tme/ic/sparc.h: Define TME_SPARC64_ASI_MASK_USER and
        !           221:        TME_SPARC64_ASI_MASK_PRIV. 
        !           222: 
        !           223: Sat Jun 05 14:54:10 2010  Matt Fredette  <[email protected]>
        !           224: 
        !           225:        * configure.in: Added a linux x86/mmap recode target.  Fixed a bug in
        !           226:        defining TME_HAVE_RECODE. 
        !           227: 
        !           228:        * bus/multibus/3c400.c (TME_3C400_CSR_GET):
        !           229:        (TME_3C400_CSR_PUT): Rewritten to avoid a pointer cast, to silence
        !           230:        strict aliasing warnings. 
        !           231: 
        !           232:        * bus/multibus/sun-mie.c (_tme_sun_mie_bus_cycle_regs): Switched to
        !           233:        invalidating tokens from TLB entries. 
        !           234:        (_tme_sun_mie_tlb_set_allocate): Removed. 
        !           235:        (_tme_sun_mie_tlb_set_add): Added. 
        !           236:        (_tme_sun_mie_tlb_fill): Truncate the address to 32 bits.  Switched to
        !           237:        tracking tokens from TLB entries. 
        !           238:        (_tme_sun_mie_tlb_fill_regs): Truncate the address to 32 bits. 
        !           239:        (_tme_sun_mie_connections_new): Provide _tme_sun_mie_tlb_set_add()
        !           240:        instead of _tme_sun_mie_tlb_set_allocate(). 
        !           241: 
        !           242:        * bus/multibus/sun-sc.c: In struct tme_sun_sc, store an actual TLB
        !           243:        entry instead of a pointer to an allocated entry. 
        !           244:        (_tme_sun_sc_bus_cycle_dma): Now take a tme_bus_addr32_t instead of a
        !           245:        tme_bus_addr_t. 
        !           246:        (_tme_sun_sc_callout): Replaced some tme_bus_addr_t with
        !           247:        tme_bus_addr32_t.  Replaced the call to tme_bus_tlb_back() with a
        !           248:        plain structure copy. 
        !           249:        (_tme_sun_sc_tlb_fill): Truncate the address to 32 bits. 
        !           250:        (_tme_sun_sc_connection_make_bus): Call tme_bus_device_tlb_set_add()
        !           251:        to add the TLB entry to the connection. 
        !           252: 
        !           253:        * generic/keyboard.c (_tme_keyboard_buffer_out1_bottom):
        !           254:        (_tme_keyboard_buffer_out0): Silence some uninitialized structure
        !           255:        variable warnings. 
        !           256: 
        !           257:        * host/gtk/gtk-display.c (_tme_gtk_display_callout): Call
        !           258:        tme_threads_gtk_yield(), to make sure that the GTK timeout and idle
        !           259:        callback are set as needed. 
        !           260: 
        !           261:        * host/posix/posix-disk.c: Define _FILE_OFFSET_BITS to 64 to try to
        !           262:        enable large-file support. 
        !           263: 
        !           264:        * ic/am7990.c: Replaced various tme_bus_addr_t with tme_bus_addr32_t. 
        !           265:        In struct tme_am7990, store actual TLB entries instead of a pointer to
        !           266:        allocated entries. 
        !           267:        (_tme_am7990_connection_make_bus): Call tme_bus_device_tlb_set_add()
        !           268:        to add the TLB entries to the connection. 
        !           269: 
        !           270:        * ic/am9513.c (_tme_am9513_th_timer): Cast what might be a 64-bit
        !           271:        time_t difference to unsigned long, to match the printf format. 
        !           272: 
        !           273:        * ic/i825x6.c: Replaced various tme_bus_addr_t with tme_bus_addr32_t. 
        !           274:        In struct tme_i825x6, store actual TLB entries instead of a pointer to
        !           275:        allocated entries. 
        !           276:        (_tme_i825x6_rx_buffers_add): Replaced the call to tme_bus_tlb_back()
        !           277:        with a plain structure copy. 
        !           278:        (_tme_i825x6_connection_make_bus): Call tme_bus_device_tlb_set_add()
        !           279:        to add the TLB entries to the connection. 
        !           280: 
        !           281:        * ic/isil7170.c (_tme_isil7170_th_timer): Cast what might be a 64-bit
        !           282:        time_t difference to unsigned long, to match the printf format. 
        !           283: 
        !           284:        * ic/lsi64854.c: Replaced various tme_bus_addr_t with
        !           285:        tme_bus_addr32_t.  Added support for the ethernet and parallel
        !           286:        channels. 
        !           287:        (_tme_lsi64854_bus_cycle_regs): Added some support for 8- and 16-bit
        !           288:        accesses, for the parallel channel. 
        !           289:        (_tme_lsi64854_tlb_set_allocate): Removed. 
        !           290:        (_tme_lsi64854_tlb_set_add): Added. 
        !           291: 
        !           292:        * ic/mk48txx.c (_tme_mk48txx_reset): Fixed a bug where we used
        !           293:        TME_MK48TXX_SEC_STOP as a register index. 
        !           294: 
        !           295:        * ic/stp22xx/stp222x-timer.c (_tme_stp222x_timer_update): Cast what
        !           296:        might be a 64-bit time_t difference to unsigned long, to match the
        !           297:        printf format. 
        !           298: 
        !           299:        * machine/sun4/sun4-timer.c (_tme_sun4_timer_update): Cast what might
        !           300:        be a 64-bit time_t difference to unsigned long, to match the printf
        !           301:        format. 
        !           302: 
        !           303: Sun Mar 07 16:29:27 2010  Matt Fredette  <[email protected]>
        !           304: 
        !           305:        * tme/recode.h: Define TME_RECODE_REGINFO_TYPE_TEMPORARY. 
        !           306: 
        !           307: Sun Feb 21 15:49:42 2010  Matt Fredette  <[email protected]>
        !           308: 
        !           309:        * TODO: Updated. 
        !           310: 
        !           311: Sat Feb 20 22:01:40 2010  Matt Fredette  <[email protected]>
        !           312: 
        !           313:        * ic/sparc/sparc-execute.c: After the last replay instruction, make
        !           314:        sure that the replay current instruction tlb token isn't the invalid
        !           315:        token. 
        !           316: 
        !           317:        * ic/sparc/sparc-impl.h: Removed an old comment. 
        !           318: 
        !           319:        * ic/sparc/sparc-rc-insns.c: Commented the TME_SPARC_RECODE_INSN_
        !           320:        values. 
        !           321: 
        !           322:        * ic/sparc/sparc-recode.c (tme_sparc_recode_invalidate_all): Fixed a
        !           323:        bug where we wouldn't clear the return address stack after
        !           324:        invalidating all instructions thunks. 
        !           325:        (tme_sparc_recode): When we can't recode, instead of calling only
        !           326:        _tme_sparc_recode_src_hash_invalidate(), call
        !           327:        tme_sparc_recode_invalidate_all() to do everything needed when all
        !           328:        instructions thunks are invalidated. 
        !           329: 
        !           330:        * ic/sparc/sparc-vis-auto.sh (tme_sparc${arch}_vis_ls_asi_pst): Fixed
        !           331:        a bug where we wouldn't unbusy the TLB entry before trapping for an
        !           332:        illegal instruction.  Any ASI handler that traps directly on its own,
        !           333:        must do this. 
        !           334: 
        !           335:        * tme/recode.h: Removed the unused tme_recode_reginfo_type macro. 
        !           336: 
        !           337: Sat Feb 20 18:35:47 2010  Matt Fredette  <[email protected]>
        !           338: 
        !           339:        * ic/sparc/sparc-insns-auto.sh (tme_sparc64_casa):
        !           340:        (tme_sparc64_casxa): Fixed a bug where we would use
        !           341:        TME_SPARC_FORMAT3_RS2, even if the i bit is set, instead of always
        !           342:        decoding rs2 like tme_sparc64_atomic() does. 
        !           343: 
        !           344:        * ic/sparc/sparc-misc.c (tme_sparc64_trap): Removed some old debugging
        !           345:        code. 
        !           346: 
        !           347: Thu Feb 18 02:01:33 2010  Matt Fredette  <[email protected]>
        !           348: 
        !           349:        * TODO: Updated. 
        !           350: 
        !           351:        * ic/sparc/sparc-misc.c (tme_sparc_nnpc_trap): Make a more complete
        !           352:        dummy load/store structure. 
        !           353: 
        !           354:        * tme/common.h: Fixed old bugs where tme_value64_uint32_lo and
        !           355:        tme_value64_uint32_hi were defined to be signed. 
        !           356:        Define tme_value64_cmp(). 
        !           357: 
        !           358: Mon Feb 15 22:23:15 2010  Matt Fredette  <[email protected]>
        !           359: 
        !           360:        * libtme/recode-regs.c (tme_recode_regs_host_clean_all): Now that a
        !           361:        host register can be clean at any size, instead of freeing a host
        !           362:        register that was dirty not at the full guest register size, just mark
        !           363:        it as clean. 
        !           364:        (_tme_recode_regs_src_load): As an optimization, if the read-uses
        !           365:        count for the guest register is only one, only load the size that this
        !           366:        instruction needs. 
        !           367:        (tme_recode_regs_dst_any):
        !           368:        (tme_recode_regs_dst_specific): Replaced
        !           369:        TME_RECODE_REGINFO_TAGS_DIRTY_SIZE() with
        !           370:        TME_RECODE_REGINFO_TAGS_VALID_SIZE(). 
        !           371: 
        !           372:        * libtme/host/x86/rc-x86-chain.c (_tme_recode_x86_chain_subs): Use
        !           373:        TME_RECODE_REGINFO_TAGS_VALID_SIZE() and TME_RECODE_REGINFO_TAGS_CLEAN
        !           374:        in the fake register information for loading the guest PC. 
        !           375: 
        !           376:        * libtme/host/x86/rc-x86-flags.c (tme_recode_host_flags_thunk_add):
        !           377:        Use TME_RECODE_REGINFO_TAGS_VALID_SIZE() in the fake register
        !           378:        information for the subs operands. 
        !           379: 
        !           380:        * libtme/host/x86/rc-x86-regs.c (tme_recode_host_reg_move): For both
        !           381:        loading and storing, get the size to move using
        !           382:        TME_RECODE_REGINFO_TAGS_WHICH_VALID_SIZE(). 
        !           383:        (tme_recode_host_reg_imm): As an optimization, only make as big an
        !           384:        immediate as the instruction needs. 
        !           385: 
        !           386:        * machine/sun/sun-mmu.c: Define TME_SUN_MMU_CONTEXT_TLBS.  In struct
        !           387:        tme_sun_mmu_tlb_set, replaced the TLB set information with a struct
        !           388:        tme_bus_tlb_set_info. 
        !           389:        In struct tme_sun_mmu, track a set of TLBs that must be invalidated
        !           390:        when the context changes. 
        !           391:        Changed from tracking pointers to TLB entries to tracking pointers to
        !           392:        their tokens. 
        !           393:        (tme_sun_mmu_tlbs_invalidate): Use tme_bus_tlb_set_invalidate() to
        !           394:        invalidate a TLB set. 
        !           395:        (tme_sun_mmu_tlbs_context_set):
        !           396:        (tme_sun_mmu_tlb_set_allocate): Removed. 
        !           397:        (tme_sun_mmu_context_add):
        !           398:        (tme_sun_mmu_context_switched):
        !           399:        (tme_sun_mmu_tlb_set_add): Added. 
        !           400: 
        !           401:        * tme/recode.h: Replaced TME_RECODE_REGINFO_TAGS_DIRTY_SIZE_MASK,
        !           402:        which was nonzero iff the host register was dirty, with
        !           403:        TME_RECODE_REGINFO_TAGS_VALID_SIZE_MASK, which is nonzero iff the tags
        !           404:        are valid. 
        !           405:        Changed the value of TME_RECODE_REGINFO_TAGS_CLEAN to be right before
        !           406:        TME_RECODE_REGINFO_TAGS_VALID_SIZE_MASK, to enable the changed
        !           407:        TME_RECODE_REGINFO_TAGS_WHICH_DIRTY_SIZE().  Renamed
        !           408:        TME_RECODE_REGINFO_TAGS_VALID_SIZE() to
        !           409:        TME_RECODE_REGINFO_TAGS_ARE_VALID_SIZE(), all callers changed.  Added
        !           410:        TME_RECODE_REGINFO_TAGS_WHICH_VALID_SIZE().  Changed
        !           411:        TME_RECODE_REGINFO_TAGS_WHICH_DIRTY_SIZE() and
        !           412:        TME_RECODE_REGINFO_TAGS_ARE_DIRTY() to use the new
        !           413:        TME_RECODE_REGINFO_TAGS_VALID_SIZE_MASK and
        !           414:        TME_RECODE_REGINFO_TAGS_CLEAN.  Added the new
        !           415:        TME_RECODE_REGINFO_TAGS_VALID_SIZE(). 
        !           416: 
        !           417: Mon Feb 15 16:57:13 2010  Matt Fredette  <[email protected]>
        !           418: 
        !           419:        * ic/stp22xx/stp222x-mdu.c (tme_stp222x_mdu_regs_clear): Added a
        !           420:        performance hack to dispatch any waiting interrupt to the CPU clearing
        !           421:        an interrupt's pending state. 
        !           422: 
        !           423:        * libtme/memory-auto.sh (_tme_memory_write): Added an explicit cast to
        !           424:        type_part, to silence compiler warnings when we're writing a constant
        !           425:        wider than type_part. 
        !           426:        (tme_memory_bus_${op}_buffer): Fixed some ${op_const} to
        !           427:        ${op_const_mem}, to silence lost-qualifier warnings. 
        !           428:        (tme_memory_atomic_${op}${size}): When threads are cooperative, do the
        !           429:        read or write using the plain macro. 
        !           430: 
        !           431:        * libtme/recode-rws.c (tme_recode_rw_thunk): Many address type values
        !           432:        that used to be plain in the read/write structure moved to an address
        !           433:        type structure.  Use tme_recode_address_type_check() to check the
        !           434:        read/write address type, and tme_recode_address_type_compare() to
        !           435:        compare it to an existing thunk's address type. 
        !           436: 
        !           437:        * libtme/threads-sjlj.c: Removed TME_SJLJ_DISPATCHER_FALSE and
        !           438:        TME_SJLJ_DISPATCHER_TRUE, since the thread dispatcher no longer
        !           439:        returns any value.  In struct tme_sjlj_thread, added the last dispatch
        !           440:        number for a thread, and under HAVE_GTK, no longer track timeout
        !           441:        handles.  Removed tme_sjlj_thread_dispatched_timeout.  Define globals
        !           442:        for the global dispatch number, the reasonably current time, and the
        !           443:        short thread flag.  Under HAVE_GTK, define globals for the timeout
        !           444:        source ID and the current timeout time. 
        !           445:        (tme_sjlj_gettimeofday): Added. 
        !           446:        (_tme_sjlj_change_state): Add a not-blocked thread next on the
        !           447:        dispatching list if threads are being dispatched, and this thread
        !           448:        wasn't already in this dispatch. 
        !           449:        (_tme_sjlj_threads_dispatching_runnable):
        !           450:        (_tme_sjlj_threads_dispatching_timeout):
        !           451:        (_tme_sjlj_timeout_time): Added. 
        !           452:        (tme_sjlj_dispatch_fd): Removed. 
        !           453:        (_tme_sjlj_threads_dispatching_fd): Added to replace
        !           454:        tme_sjlj_dispatch_fd(). 
        !           455:        (tme_sjlj_dispatch): Return no value, and don't expect
        !           456:        tme_sjlj_yield() to return any value via longjmp().  Before
        !           457:        dispatching a thread, remove it from the timeout list if needed, and
        !           458:        set its dispatch number.  After a dispatch, increment the global
        !           459:        dispatch number. 
        !           460:        (_tme_sjlj_gtk_callback_timeout):
        !           461:        (_tme_sjlj_gtk_callback_fd):
        !           462:        (_tme_sjlj_gtk_callback_idle):
        !           463:        (_tme_sjlj_gtk_yield): Added. 
        !           464:        (tme_sjlj_threads_run): If we're using the GTK main loop, do an
        !           465:        initial _tme_sjlj_gtk_yield() instead of adding an idle directly.  In
        !           466:        our main loop, removed the code that sorted the timeout list, now that
        !           467:        tme_sjlj_yield() inserts a thread at the right place on the list.  Use
        !           468:        _tme_sjlj_timeout_time() to get the timeout time.  After the select(),
        !           469:        use _tme_sjlj_threads_dispatching_runnable(),
        !           470:        _tme_sjlj_threads_dispatching_timeout() and
        !           471:        _tme_sjlj_threads_dispatching_fd() to build the dispatching list, and
        !           472:        tme_sjlj_dispatch() to dispatch them all. 
        !           473:        (tme_sjlj_thread_create): Initialize the thread's dispatch number. 
        !           474:        (tme_sjlj_cond_notify): Always call _tme_sjlj_change_state with
        !           475:        TME_SJLJ_THREAD_STATE_RUNNING (only the dispatch functions can use
        !           476:        TME_SJLJ_THREAD_STATE_DISPATCHING). 
        !           477:        (tme_sjlj_yield): Don't return any value through longjmp().  Under
        !           478:        HAVE_GTK, don't do any GTK timeout allocation.  Insert a thread with a
        !           479:        timeout at the right spot on the timeout list. 
        !           480:        (tme_sjlj_sleep): Use tme_thread_long() to mark long runs, and
        !           481:        tme_gettimeofday() to get the current time.  Fixed a bug where the
        !           482:        first timeout would be undefined. 
        !           483:        (tme_sjlj_select_yield): Use tme_thread_long() to mark a long run. 
        !           484: 
        !           485:        * libtme/host/x86/rc-x86-insns.c (_tme_recode_x86_insn_guest): Added
        !           486:        support for TME_RECODE_OPERAND_UNDEF source operands.  Fixed a bug in
        !           487:        the x86-64 double-host-size where we would load the first source
        !           488:        operand for the second. 
        !           489: 
        !           490:        * libtme/host/x86/rc-x86-rws.c (tme_recode_host_rw_thunk_new): Get
        !           491:        parameters from the new address type structure in the read/write
        !           492:        structure, instead of directly from the read/write structure or the ic
        !           493:        structure. 
        !           494: 
        !           495: Mon Feb 15 14:58:58 2010  Matt Fredette  <[email protected]>
        !           496: 
        !           497:        * acinclude.m4: Quote all of the AC_DEFUN macro names. 
        !           498:        * configure.in: When long is 64 bits, check for the maximum shift of a
        !           499:        64-bit value, whether or not right shifts of signed 64-bit values are
        !           500:        arithmetic, and for bswap64(). 
        !           501:        Updated to the AM_PATH_GTK_2_0() macro.  When long is 64 bits or the
        !           502:        compiler is gcc, add sunultra1 to the systems list. 
        !           503:        Define bus_size_max and recode_size_guest_max from values from each
        !           504:        system to build. 
        !           505:        Added sunultra1. 
        !           506:        Added some missing $srcdir to paths.  Added the --enable-recode
        !           507:        option, and configure recode support.  Configure miscellaneous target
        !           508:        support.  Generate tme/recode-host.h, libtme/recode-host.c, and
        !           509:        libtme/misc-host.c.  Added more Makefiles to the AC_OUTPUT(). 
        !           510: 
        !           511: Sun Feb 14 20:17:12 2010  Matt Fredette  <[email protected]>
        !           512: 
        !           513:        * ic/sparc/sparc-execute.c:
        !           514:        * ic/sparc/sparc-rc-ls.c: Switched from the old TME_RECODE_RW_FLAG and
        !           515:        TME_SPARC_RECODE_RW_FLAG_ names to the new TME_RECODE_TLB_FLAG and
        !           516:        TME_SPARC_RECODE_TLB_FLAG_ names. 
        !           517: 
        !           518:        * ic/sparc/sparc-fpu.c [TME_HAVE_INT64_T]: Include sparc-vis-auto.c. 
        !           519:        (tme_sparc_fpu_exception_check): Use the per-architecture fp_exception
        !           520:        trap. 
        !           521:        (tme_sparc32_stdfq): Use TME_SPARC_INSN_FPU_ENABLED() instead of
        !           522:        TME_SPARC_INSN_FPU_STORE(), which might mem_address_not_aligned trap
        !           523:        before the fp_exception, which is the wrong order on a v9 CPU.  This
        !           524:        function needs to be corrected for any CPU that actually implements
        !           525:        the FQ. 
        !           526:        (tme_sparc_fpu_fpreg_aligned): Removed. 
        !           527:        (tme_sparc_fpu_fpreg_decode): Added, as a replacement for
        !           528:        tme_sparc_fpu_fpreg_aligned(). 
        !           529:        (tme_sparc_fpu_fpreg_format): Our caller is now expected to make sure
        !           530:        the register is aligned. 
        !           531:        (tme_sparc_fpu_fpreg_read): Don't use TME_FIELD_MASK_EXTRACTU with a
        !           532:        variable mask.  Use tme_sparc_fpu_fpreg_decode() to decode the
        !           533:        register number. 
        !           534: 
        !           535:        * ic/sparc/sparc-impl.h: Switched from the old TME_RECODE_RW_FLAG()
        !           536:        and TME_SPARC_RECODE_RW_FLAG_ names to the new TME_RECODE_TLB_FLAG()
        !           537:        and TME_SPARC_RECODE_TLB_FLAG_ names. 
        !           538: 
        !           539:        * ic/sparc/sparc-misc.c:
        !           540:        * ic/sparc/sparc-rc-verify.c: Switched from the old
        !           541:        tme_sparc_dtlb_recode_tlb names to the new tme_sparc_recode_tlb names. 
        !           542: 
        !           543:        * ic/sparc/sparc-rc-ls.c (tme_sparc_recode_ls_tlb_update): The DTLB
        !           544:        array is really a single TLB array with the ITLB entries.  The recode
        !           545:        TLB entries' read/write flags were renamed to just (TLB) flags. 
        !           546:        (_tme_sparc_recode_ls_init): Set the members of the new address type
        !           547:        structure in the read/write structure.  Many of them used to be plain
        !           548:        in the read/write structure. 
        !           549: 
        !           550: Sun Feb 14 18:08:02 2010  Matt Fredette  <[email protected]>
        !           551: 
        !           552:        * ic/sparc/cy7c601.c (tme_ic_,sparc,cy7c601): Call
        !           553:        tme_sparc_sync_init() and set the tme_sparc_timing_loop_cycles_each
        !           554:        value. 
        !           555: 
        !           556:        * ic/sparc/mb86900.c (tme_ic_,sparc,mb86900): Call
        !           557:        tme_sparc_sync_init() and set the tme_sparc_timing_loop_cycles_each
        !           558:        value. 
        !           559: 
        !           560:        * ic/sparc/sparc-execute.c: Set the recode chain TLB flags mask. 
        !           561:        Manage a pointer to the token for current instruction TLB entry,
        !           562:        instead of the current instruction TLB entry itself, because that's
        !           563:        what the recode instruction thunks do.  On a branch to ., truncate the
        !           564:        instruction burst to get to the code that handles a branch to .  as a
        !           565:        timing loop or an idle.  At the end of an instruction burst, possibly
        !           566:        update the instruction burst runlength, and if the next instruction
        !           567:        will be annulled, loop to handle it now.  Clear the instruction burst
        !           568:        other flag if this will be a normal burst, otherwise set it for an
        !           569:        idle burst.  When updating PC_next_next on a v9 CPU, mask it with the
        !           570:        address mask. 
        !           571:        [TME_SPARC_HAVE_RECODE()]: Removed the source key offset. 
        !           572:        tme_recode_insns_thunk_run() now takes a chain thunk.  When recode
        !           573:        thunks return, switch to the invalid instruction TLB entry. 
        !           574: 
        !           575:        * ic/sparc/sparc-impl.h: Include <tme/runlength.h>. 
        !           576:        Define TME_SPARC64_TICK_NPT and TME_SPARC64_TICK_COUNTER.  Added
        !           577:        support for the sunos64-type-0 idle type. 
        !           578:        (TME_SPARC_IDLE_MARK): Flag the instruction burst as shortened. 
        !           579:        Define TME_SPARC_MODE_TIMING_LOOP. 
        !           580:        [!TME_HAVE_RECODE]: Removed old arguments from
        !           581:        _TME_SPARC_RECODE_CWP_UPDATE. 
        !           582:        Define different versions of TME_SPARC_HAVE_RECODE() that avoid using
        !           583:        TME_SPARC_VERSION(ic) whenever possible.  Define
        !           584:        TME_SPARC_RECODE_TLB_FLAG_CHAIN_USER() and
        !           585:        TME_SPARC_RECODE_TLB_FLAG_CHAIN_PRIV().  Define the
        !           586:        TME_SPARC_EXTERNAL_CHECK_ macros.  Define tme_sparc_ireg_umax_t. 
        !           587:        In struct tme_sparc, added the number of scaled cycles per
        !           588:        microsecond, the runlength state and its update state, get the
        !           589:        instruciton burst from the runlength state, track the token of any
        !           590:        currently busy instruction TLB entry, added the address mask, added
        !           591:        the timing information, the current chain TLB flags, the chain return
        !           592:        address stack, removed the chain cacheable and source key offset,
        !           593:        added the instructions group structure.  Declare
        !           594:        tme_sparc_sync_init(), tme_sparc_itlb_current(),
        !           595:        tme_sparc_insn_peek(), the timing support functions, the chain TLB
        !           596:        update functions, and tme_sparc_recode_verify_end_preinstruction(). 
        !           597:        Now define the verify no-operation macros even if TME_HAVE_RECODE is
        !           598:        zero. 
        !           599: 
        !           600:        * ic/sparc/sparc-insns-auto.sh: Instead of testing for PSTATE.AM,
        !           601:        always mask sparc64 addresses with ic->tme_sparc_address_mask. 
        !           602:        (tme_sparc${arch}_${slow}): Set ic->_tme_sparc_instruction_burst_other
        !           603:        to flag the shortened burst. 
        !           604:        (tme_sparc${arch}_ls): Even when the ASI has not been specified, the
        !           605:        instruction may provide ASI flags, so add them in.  Call
        !           606:        tme_sparc${arch}_recode_chain_tlb_update() to update a recode
        !           607:        instruction TLB entry. 
        !           608:        Don't assert that the mapping made a mapping until after checking
        !           609:        whether or not it completed the transfer. 
        !           610: 
        !           611:        * ic/sparc/sparc-insns.c (tme_sparc32_wrpsr): Set
        !           612:        ic->_tme_sparc_instruction_burst_other to flag the shortened
        !           613:        instruction burst. 
        !           614:        (tme_sparc64_return):
        !           615:        (tme_sparc64_done_retry): Instead of testing for PSTATE.AM, always
        !           616:        mask sparc64 addresses with ic->tme_sparc_address_mask. 
        !           617:        (tme_sparc64_rdpr):
        !           618:        (tme_sparc64_rdasr): Mask the scaled cycles counter to fit in
        !           619:        TICK.COUNTER, and or in TICK.NPT if needed. 
        !           620:        (_tme_sparc64_idle_type_sunos64_type_0_splhigh): Added. 
        !           621:        (tme_sparc64_wrpr): Handle TICK.NPT and the TICK.COUNTER offset
        !           622:        separately. 
        !           623:        Fixed a bug where we wouldn't redispatch after a write to PSTATE.  To
        !           624:        improve interrupt latency, do an interrupt check before raising PIL,
        !           625:        and after lowering it. 
        !           626:        Added support for detecting the sunos64-type-0 idle type. 
        !           627: 
        !           628:        * ic/sparc/sparc-misc.c: Replaced uses of the _tme_sparc_itlb_busy
        !           629:        member with either _tme_sparc_itlb_current_token and the token
        !           630:        functions, or a call to tme_sparc_itlb_current(). 
        !           631:        (tme_sparc_idle): Call the external check function with
        !           632:        TME_SPARC_EXTERNAL_CHECK_MUTEX_LOCKED. 
        !           633:        (tme_sparc_thread): When entering execution mode, if this instruction
        !           634:        burst will be used to update the runlength, note its start time. 
        !           635:        Added support for the timing loop mode. 
        !           636:        (_tme_sparc_command): Added the sunos64-type-0 idle type. 
        !           637:        (tme_sparc_sync_init): Added. 
        !           638:        (tme_sparc_new): For the timing loop code, initialize
        !           639:        ic->tme_sparc_cycles_unscaling.  Initialize the instruction burst
        !           640:        runlength state. 
        !           641:        (tme_sparc_do_idle): Set ic->_tme_sparc_instruction_burst_other to
        !           642:        flag the shortened instruction burst. 
        !           643:        (tme_sparc32_external_check): Now take flags instead of a boolean. 
        !           644:        (tme_sparc64_trap): Reset TICK.NPT and TICK.counter separately.  Also
        !           645:        reset TICK.counter on an XIR. 
        !           646:        (tme_sparc_itlb_current):
        !           647:        (tme_sparc_insn_peek): Added. 
        !           648:        (tme_sparc_fetch_nearby): Call tme_sparc_insn_peek() to do the peek. 
        !           649:        (tme_sparc_callout_relock): If we need to do an external check,
        !           650:        shorten the current instruction burst to do one immediately. 
        !           651: 
        !           652:        * ic/sparc/sparc-rc-chain.c: Removed some accidentally committed
        !           653:        AUDITs. 
        !           654: 
        !           655:        * ic/sparc/sparc-rc-insns.c: Replaced the TME_SPARC_RECODE_INSN_JUMP_
        !           656:        macros with TME_SPARC_RECODE_CHAIN_INFO() used with the
        !           657:        TME_RECODE_CHAIN_INFO_ macros. 
        !           658:        (tme_sparc_recode_insn_assist_redispatch): Use
        !           659:        _tme_sparc_recode_chain_src_key() to check if the current PC is still
        !           660:        cache-valid. 
        !           661:        (_tme_sparc_recode_insn_assist_jmpl): Added. 
        !           662:        (_tme_sparc_recode_recode): Added support for PSTATE.AM, mostly by
        !           663:        doing PC calculations in that address size.  Be sure to not recode the
        !           664:        last instruction before tme_sparc_ireg_t wraps to zero. 
        !           665:        Fixed jmpl recoding to call the assist function to check for traps, to
        !           666:        try to characterize a jmpl as a call or a return, and to better write
        !           667:        the PC of the jmpl into any destination register.  Mark each chain
        !           668:        jump as either near or far.  When recoding a call instruction, if the
        !           669:        PC is not the guest size, zero-extend r[15] after the PC has been
        !           670:        copied into it.  Also use r[15] as the source for advancing PC to the
        !           671:        branch delay slot, for better host register allocation.  Mark each
        !           672:        chain call as either near or far. 
        !           673:        When an instruction needs a full assist, the source operands aren't
        !           674:        used, so make them the recode %undef.  If there is no chain
        !           675:        information at the end of an instructions group, make unconditional
        !           676:        jump information.  If the chain information is conditional, mark the
        !           677:        alternate as either near or far.  Store the end of the instructions
        !           678:        and the chain information in the instructions group. 
        !           679: 
        !           680:        * ic/sparc/sparc-rc-verify.c: Removed
        !           681:        _tme_sparc_recode_verify_ic_replay_token. 
        !           682:        (_tme_sparc_recode_verify_change): Renamed the read/write flags to
        !           683:        just TLB flags. 
        !           684:        (tme_sparc_recode_verify_begin): Use tme_sparc_itlb_current() to get
        !           685:        the current TLB entry.  Preserve the token pointer when initializing
        !           686:        the current TLB entry in the replay state.  Fix
        !           687:        _tme_sparc_itlb_current_token in the saved in state.  Force the
        !           688:        instruction burst size to two in the in state. 
        !           689:        (tme_sparc_recode_verify_end): Use tme_sparc_itlb_current() to get the
        !           690:        current TLB entry.  Set _tme_sparc_itlb_current_token instead of
        !           691:        _tme_sparc_itlb_busy. 
        !           692:        (tme_sparc_recode_insns_dump): Check _tme_sparc_itlb_current_token
        !           693:        instead of _tme_sparc_itlb_busy.  Call
        !           694:        _tme_sparc_recode_chain_src_key() to get the source key. 
        !           695:        (_tme_sparc_recode_verify_init): Initialize and set tokens on all
        !           696:        replay TLB entries. 
        !           697: 
        !           698:        * ic/sparc/sparc-recode.c: Define TME_SPARC_RECODE_SRC_KEY_UNDEF,
        !           699:        TME_SPARC64_RECODE_SRC_KEY_FLAG_AM and
        !           700:        TME_SPARC64_RECODE_SRC_KEY_FLAG_CLE.  Include sparc-rc-chain.c for
        !           701:        each architecture. 
        !           702:        (_tme_sparc_recode_src_hash_invalidate): Use
        !           703:        TME_SPARC_RECODE_SRC_KEY_UNDEF for an invalidated source key.  If an
        !           704:        invalidated source key has an instructions thunk, invalidate it, to
        !           705:        make sure that no other instruction thunk can chain to it. 
        !           706:        (_tme_sparc_recode_jump_chain): Removed. 
        !           707:        (tme_sparc_recode): Set the instructions group host source address. 
        !           708:        On a v9 CPU, add PSTATE.AM and PSTATE.CLE to the source address key. 
        !           709:        Set the instructions group valid byte and mask.  Check for
        !           710:        TME_SPARC_RECODE_SRC_KEY_UNDEF for an invalidated source key, since
        !           711:        valid source keys may now be nonzero mod sizeof(tme_uint32_t). 
        !           712:        (tme_sparc_recode_dump_insns): Don't take the recode instructions
        !           713:        array, since it can be found in the struct tme_sparc recode
        !           714:        instructions group.  Replaced the TME_RECODE_OPCODE_JUMP dump with a
        !           715:        TME_RECODE_CHAIN_INFO_ dump.  Added support for
        !           716:        TME_RECODE_OPERAND_UNDEF. 
        !           717:        (tme_sparc_recode_init): Removed address translation and jump chain
        !           718:        member initialization.  These are now given in address type structures
        !           719:        by _tme_sparc_recode_ls_init() and _tme_sparc_recode_chain_init(). 
        !           720:        Set the first instruction in the instructions group.  Call the
        !           721:        _tme_sparc_recode_chain_init() for this architecture. 
        !           722: 
        !           723:        * ic/sparc/sparc-timing.c: Replaced uses of the _tme_sparc_itlb_busy
        !           724:        member with _tme_sparc_itlb_current_token and the token functions. 
        !           725:        (tme_sparc_timing_loop_finish): Flag the shortened instruction burst. 
        !           726: 
        !           727:        * ic/sparc/stp103x.c: Define TME_STP103X_TCR_INT_DIS and
        !           728:        TME_STP103X_TCR_TICK_CMPR.  In struct tme_stp103x, added the tick
        !           729:        compare condition and time. 
        !           730:        (tme_misc_timeval_never): Added, although this should be moved. 
        !           731:        (_tme_stp103x_interrupt_check): Take a mask of flags, instead of a
        !           732:        boolean.  All callers changed.  Added support for
        !           733:        TME_SPARC_EXTERNAL_CHECK_PCS_UPDATED. 
        !           734:        (_tme_stp103x_update_sir): Now take and-not and or masks for SIR.  All
        !           735:        callers changed. 
        !           736:        Before clearing SIR.TICK_INT, to help TICK interrupt latency, do an
        !           737:        interrupt check, backing up the PCs to the previous instruction if a
        !           738:        tick interrupt should have been delivered. 
        !           739:        (_tme_stp103x_update_pstate): Make sure %g0 is zero in both the normal
        !           740:        global register set and the current global register set.  When there
        !           741:        is recode support, if PSTATE.AM and/or PSTATE.CLE are changing, clear
        !           742:        the return address stack.  Update the address mask according to
        !           743:        PSTATE.AM, and mask the new PCs with it. 
        !           744:        (_tme_stp103x_rdpr): Use tme_sparc_itlb_current() instead of
        !           745:        ic->_tme_sparc_itlb_busy.  Don't use return() with a void value. 
        !           746:        (_tme_stp103x_wrasr): Update the tick compare thread on a write to
        !           747:        TCR. 
        !           748:        (_tme_stp103x_flush): Always mask the address.  Since the default ASI
        !           749:        may not be the unrestricted ASI, and the nucleus ASI can't be modified
        !           750:        with ASI flags, instead of giving an explicit ASI, specify the
        !           751:        no-fault ASI flag in the load/store information. 
        !           752:        (_tme_stp103x_ls_trap): Added support for TME_SPARC_LSINFO_NO_FAULT. 
        !           753:        (_tme_stp103x_ls_address_map): If _tme_stp103x_ls_trap() ever returns,
        !           754:        check for TME_SPARC_LSINFO_NO_FAULT and return, instead of aborting. 
        !           755:        (_tme_stp103x_tick_compare_th): Added. 
        !           756:        (_tme_stp103x_external_check): Take a mask of flags, instead of a
        !           757:        boolean.  All callers changed. 
        !           758:        (_tme_stp103x_interrupt): Added a missed wakeup on the external
        !           759:        condition. 
        !           760:        (_tme_stp103x_new): Call tme_sparc_sync_init().  Initialize the tick
        !           761:        compare thread state, and start the tick compare thread.  Initialize
        !           762:        ic->tme_sparc_timing_loop_cycles_each. 
        !           763: 
        !           764: Sun Feb 14 00:48:04 2010  Matt Fredette  <[email protected]>
        !           765: 
        !           766:        * ic/sparc/sparc-misc-auto.sh: Renamed tme_sparc64_ireg_tick to
        !           767:        tme_sparc64_ireg_tick_offset, and added the separate
        !           768:        tme_sparc64_ireg_tick_npt. 
        !           769: 
        !           770:        * serial/ms-mssystems.c (_tme_serial_ms_mssystems5_init): Set the
        !           771:        rate-limiting based on the baud rate and the packet size. 
        !           772: 
        !           773:        * serial/serial-ms.c: _tme_serial_ms_callout): Added support for
        !           774:        rate-limiting reading events. 
        !           775:        (_tme_serial_ms_th_rate): Added. 
        !           776:        (tme_serial_,kb,mouse): Start the rate-limiting thread. 
        !           777: 
        !           778:        * serial/serial-ms.h: In struct tme_serial_ms, added members for
        !           779:        rate-limiting serial data. 
        !           780: 
        !           781: Thu Feb 11 00:15:55 2010  Matt Fredette  <[email protected]>
        !           782: 
        !           783:        * tme/recode.h: Define TME_RECODE_OPERAND_UNDEF. 
        !           784: 
        !           785: Wed Feb 10 00:34:26 2010  Matt Fredette  <[email protected]>
        !           786: 
        !           787:        * libtme/host/x86/rc-x86-regs.c (tme_recode_host_reg_imm): When the
        !           788:        most significant half of a double-host-size immediate is zero, emit an
        !           789:        xorl to clear the second register, instead of a mov of zero. 
        !           790: 
        !           791: Tue Feb 09 01:27:56 2010  Matt Fredette  <[email protected]>
        !           792: 
        !           793:        * libtme/recode-regs.c (tme_recode_regs_host_reserve): Assert that
        !           794:        there is a reservation array entry free. 
        !           795:        (_tme_recode_regs_src_load): Fixed a bug where we didn't handle the
        !           796:        case where the host register was already reserved, and would instead
        !           797:        decrement the reserved read-uses count. 
        !           798: 
        !           799: Sun Feb 07 17:32:01 2010  Matt Fredette  <[email protected]>
        !           800: 
        !           801:        * libtme/recode-impl.h: Define struct tme_recode_tlb_type. 
        !           802:        tme_recode_host_insns_thunk_new() now takes an instructions group,
        !           803:        instead of pointers to the array of instructions.  Declare
        !           804:        tme_recode_address_type_check(), tme_recode_address_type_compare(),
        !           805:        and tme_recode_address_type_tlb_type(). 
        !           806: 
        !           807:        * libtme/recode-insns.c (tme_recode_insns_thunk): Now take a
        !           808:        instructions group structure, instead of pointers to the instructions
        !           809:        array.  All callers changed.  Removed the TME_RECODE_OPCODE_JUMP
        !           810:        support. 
        !           811: 
        !           812:        * libtme/host/x86/rc-x86-insns.c (_tme_recode_x86_insn_jump):
        !           813:        (tme_recode_insn_jump_chain): Removed. 
        !           814:        (_tme_recode_x86_insn_emit): When emitting an extension instruction,
        !           815:        fixed a performance bug where we would load the source operand at the
        !           816:        destination size, instead of at the extension's source operand size. 
        !           817:        Removed the TME_RECODE_OPCODE_JUMP support. 
        !           818:        (tme_recode_insns_thunk_invalidate): Added. 
        !           819:        (tme_recode_host_insns_thunk_new): Call _tme_recode_x86_chain_in() and
        !           820:        _tme_recode_x86_chain_out() to emit the chain in and chain out
        !           821:        instructions, instead of emitting a jump to the instructions prologue. 
        !           822:        Get the instructions array from the instructions group structure. 
        !           823: 
        !           824:        * libtme/host/x86/recode-x86.c: Define TME_RECODE_X86_OPCODE_PUSH_Ib
        !           825:        and TME_RECODE_X86_OPCODE_BINOP_Iz_A.  Define
        !           826:        TME_RECODE_X86_EA_BASE_IP.  Remove
        !           827:        TME_RECODE_X86_OFFSET_JUMP_CHAIN_DIRECT. 
        !           828:        (_tme_recode_x86_emit_jmp):
        !           829:        (_tme_recode_x86_fixup_jmp): Added. 
        !           830:        (tme_recode_host_ic_new): Removed the code that emitted the
        !           831:        instructions thunk prologue, epilogue, jump subs and jump chain subs. 
        !           832:        Call _tme_recode_x86_chain_epilogue() to make the instructions thunk
        !           833:        epilogue. 
        !           834: 
        !           835:        * tme/Makefile.am: Added runlength.h to pkginclude_HEADERS. 
        !           836: 
        !           837:        * tme/recode.h: Removed TME_RECODE_OPCODE_JUMP.  Replaced the
        !           838:        TME_RECODE_JUMP_ macros with the TME_RECODE_CHAIN_INFO_ macros. 
        !           839:        (TME_RECODE_INSNS_THUNK_INSNS_MAX): Account for
        !           840:        TME_RECODE_HOST_INSN_THUNK_OVERHEAD.  In the TLB entry structures,
        !           841:        renamed all of the read/write flags to just (TLB) flags. 
        !           842:        Define struct tme_recode_address_type.  In struct tme_recode_rw,
        !           843:        replaced the address type members with an address type structure. 
        !           844:        Define struct tme_recode_chain_thunk.  Define struct
        !           845:        tme_recode_insns_group.  In struct tme_recode_ic, removed the members
        !           846:        that are now included in the address type structure in a struct
        !           847:        tme_recode_rw.  Replaced the tme_recode_ic_jump_chain member with the
        !           848:        tme_recode_ic_chain_fixup member.  Renamed tme_recode_ic_jump_counter
        !           849:        to tme_recode_ic_chain_counter_offset.  Added members for the chain
        !           850:        return address stack and the current instruction TLB entry token
        !           851:        offset.  Declare tme_recode_chain_ras_clear(),
        !           852:        tme_recode_chain_thunk(), tme_recode_chain_fixup(), and
        !           853:        tme_recode_insns_thunk_invalidate().  tme_recode_insns_thunk() now
        !           854:        takes an instructions group, instead of pointers to the array of
        !           855:        instructions. 
        !           856:        [TME_RECODE_DEBUG]: Declare tme_recode_chain_thunk_dump(). 
        !           857: 
        !           858:        * tme/threads.h: Declare tme_sjlj_gettimeofday(), and alias
        !           859:        tme_gettimeofday to it.  Declare tme_sjlj_thread_short.  Define
        !           860:        tme_thread_long(). 
        !           861: 
        !           862:        * tme/host/recode-x86.h: Define TME_RECODE_X86_CHAIN_IN_SIZE_MAX and
        !           863:        TME_RECODE_X86_CHAIN_OUT_SIZE_MAX, and use them to define
        !           864:        TME_RECODE_HOST_INSN_THUNK_OVERHEAD.  Define
        !           865:        TME_RECODE_HOST_CHAIN_THUNK.  In TME_RECODE_X86_IC, renamed
        !           866:        tme_recode_x86_ic_insns_prologue to tme_recode_x86_ic_chain_epilogue. 
        !           867:        Removed tme_recode_x86_ic_insns_epilogue, tme_recode_x86_ic_subs_jump,
        !           868:        and tme_recode_x86_ic_subs_jump_chain.  Added
        !           869:        tme_recode_x86_ic_chain_fixup_target. 
        !           870:        (tme_recode_insns_thunk_run): Now takes a chain thunk instead of the
        !           871:        recode IC, all callers changed.  Renamed the TME_RECODE_RW_FLAG macros
        !           872:        to TME_RECODE_TLB_FLAG macros.  Define the tme_recode_ras_entry_t
        !           873:        type. 
        !           874: 
        !           875: Sun Feb 07 16:51:53 2010  Matt Fredette  <[email protected]>
        !           876: 
        !           877:        * generic/mouse.c (_tme_mouse_deltas_opposite): Added. 
        !           878:        (tme_mouse_buffer_copyin): If the new event can be merged with the
        !           879:        previous new event, merge them. 
        !           880: 
        !           881:        * libtme/Makefile.am: Added SUBDIRS. 
        !           882:        In libtme_la_SOURCES, replaced misc.c with misc-host.c, and added the
        !           883:        machine independent recode sources and token.c and runlength.c. 
        !           884:        Added misc.c to EXTRA_DIST. 
        !           885: 
        !           886:        * libtme/kgdb.c libtme/recode-address.c libtme/runlength.c
        !           887:          tme/runlength.h tools/stp103x-tlbs.pl tools/sun4u_58-find-module.pl
        !           888:          tools/tme-log-binary-dump-calls-traps.pl
        !           889:          tools/tme-toolchain-wrapper.pl:
        !           890: 
        !           891:          Added. 
        !           892: 
        !           893:        * libtme/recode-ic.c (tme_recode_opcode_dump): Removed
        !           894:        TME_RECODE_OPCODE_JUMP. 
        !           895: 
        !           896:        * libtme/host/x86/Makefile.am: Added rc-x86-tlb.c and rc-x86-chain.c
        !           897:        to EXTRA_DIST. 
        !           898: 
        !           899:        * libtme/host/x86/rc-x86-chain.c: Fixed many bugs where
        !           900:        TME_RECODE_X86_MOD_RM_EA_DISP32() was used with
        !           901:        TME_RECODE_X86_EA_BASE_IP. 
        !           902:        Split TME_RECODE_X86_CHAIN_RETURN_ADDRESS() into separate definitions
        !           903:        for ia32 and x86-64 hosts, because the ia32 expression gets a pointer
        !           904:        cast size warning on x86-64. 
        !           905:        (_tme_recode_x86_chain_in): Explicitly cast a value being stored into
        !           906:        a tme_uint8_t, to tme_uint8_t, to avoid a warning when this value is a
        !           907:        16-bit constant.  Fixed a bug where we added two rex prefixes
        !           908:        together. 
        !           909:        (_tme_recode_x86_chain_prologue): Fixed an assert. 
        !           910: 
        !           911: Fri Feb 05 01:06:01 2010  Matt Fredette  <[email protected]>
        !           912: 
        !           913:        * ic/sparc/Makefile.am: Added sparc-rc-chain.c to EXTRA_DIST. 
        !           914:        * ic/sparc/sparc-rc-chain.c: Added. 
        !           915: 
        !           916: Fri Jan 15 03:05:59 2010  Matt Fredette  <[email protected]>
        !           917: 
        !           918:        * libtme/host/x86/rc-x86-chain.c:
        !           919:        * libtme/host/x86/rc-x86-tlb.c: Added. 
        !           920: 
        !           921: Sun Nov 08 17:35:49 2009  Matt Fredette  <[email protected]>
        !           922: 
        !           923:        * host/posix/posix-disk.c (_tme_posix_disk_buffer_free):
        !           924:        (_tme_posix_disk_open):
        !           925:        (_tme_posix_disk_close):
        !           926:        (__tme_posix_disk_command):
        !           927:        (_tme_posix_disk_command): Added. 
        !           928:        (_tme_posix_disk_buffer_get): Now use _tme_posix_disk_buffer_free() to
        !           929:        free a buffer. 
        !           930:        (tme_host_posix,disk): Now use _tme_posix_disk_open() to open the disk
        !           931:        image and set our command function on the element. 
        !           932: 
        !           933:        * ic/stp2024.c: Corrected all of the audio codec and DMA register
        !           934:        offsets. 
        !           935: 
        !           936:        * ic/sparc/Makefile.am: Added sparc-timing.c to
        !           937:        tme_ic_sparc_la_SOURCES. 
        !           938: 
        !           939:        * ic/sparc/sparc-fpu-auto.sh: Fixed a bug where FsMULd was doing a
        !           940:        single-precision multiply. 
        !           941: 
        !           942:        * ic/sparc/sparc-rc-ls.c (_tme_sparc_recode_ls_assist_check): On a v9
        !           943:        CPU, mask the addresses. 
        !           944: 
        !           945:        * ic/sparc/sparc-rc-verify.c (tme_sparc_recode_verify_end_preinstruction):
        !           946:        Added. 
        !           947:        (tme_sparc_recode_verify_end): Added support for
        !           948:        TME_SPARC_RECODE_VERIFY_PC_NONE. 
        !           949:        (tme_sparc_recode_insns_dump): Fixed the suggested prints for the case
        !           950:        where TME_SPARC_RECODE_SRC_HASH_SIZE_ELEMENT is not one. 
        !           951: 
        !           952:        * ic/sparc/sparc-timing.c (_tme_sparc_timing_loop_start): Corrected
        !           953:        the comment about the state of the PCs. 
        !           954:        (tme_sparc_timing_loop_assist): Now call
        !           955:        tme_sparc_recode_verify_end_preinstruction(). 
        !           956: 
        !           957:        * ic/sparc/sparc-vis-auto.sh: Added support for the
        !           958:        FCMP{GT,LE,NE,EQ}{16,32} instructions. 
        !           959: 
        !           960:        * ic/stp22xx/stp220x.c (_tme_stp220x_ebus_cycle): Fixed a bug where we
        !           961:        wouldn't update the read/write bits in the control register. 
        !           962: 
        !           963:        * ic/stp22xx/stp222x-impl.h: Added tme_stp2220_mdu_idi_zs0_zs1_active
        !           964:        to struct tme_stp222x. 
        !           965: 
        !           966:        * ic/stp22xx/stp222x-mdu.c (tme_stp222x_mdu_intcon): Now mimic how the
        !           967:        zs0 and zs1 interrupt signals are wired together somewhere. 
        !           968: 
        !           969:        * ic/stp22xx/stp222x-stc.c (tme_stp222x_stc_flush): The stp2220 flush
        !           970:        writeback actually only writes back four bytes, not eight. 
        !           971:        (tme_stp222x_stc_regs_diag): Added minimal emulation of reads of the
        !           972:        diagnostic registers, always returning zero. 
        !           973: 
        !           974:        * libtme/misc.c (tme_misc_cycles_scaled): Now take an optional pointer
        !           975:        to an unscaled cycles counter, and do the scaling as a simple
        !           976:        floating-point multiply.  Added support for hosts that don't have a
        !           977:        64-bit integral type. 
        !           978:        (tme_misc_cycles_scaling): Now make the scaling with a simple
        !           979:        floating-point division. 
        !           980:        [!TME_HAVE_MISC_CYCLES_PER_MS] (tme_misc_cycles_per_ms): Added support
        !           981:        for hosts that don't have a 64-bit integral type. 
        !           982:        [!TME_HAVE_MISC_CYCLES] (tme_misc_cycles): Added support for hosts
        !           983:        that don't have a 64-bit integral type. 
        !           984:        (tme_misc_cycles_spin_until):
        !           985:        (tme_value64_add):
        !           986:        (tme_value64_sub): Added. 
        !           987: 
        !           988:        * libtme/threads-sjlj.c (tme_sjlj_dispatch): Fixed a bug where we
        !           989:        would call gtk_idle_add_priority() when we weren't using GTK. 
        !           990: 
        !           991:        * libtme/host/x86/misc-x86.c: Define tme_misc_cycles() with inline. 
        !           992: 
        !           993:        * machine/sun/sun-bwtwo.c (_tme_sunbw2_type_set): Now define the
        !           994:        interrupt bus signal. 
        !           995: 
        !           996:        * machine/sun/sun-cgsix.c (_tme_suncg6_type_set): Now define the
        !           997:        interrupt bus signal. 
        !           998: 
        !           999:        * machine/sun/sun-fb.c: Now define TME_SUNFB_UPDATE_SIZE.  Changed
        !          1000:        various tme_bus_addr_t to tme_bus_addr32_t. 
        !          1001:        (_tme_sunfb_callout): Now call out the framebuffer-specific interrupt
        !          1002:        bus signal, instead of always using the unspecified one, and mark the
        !          1003:        signal callout as an edge. 
        !          1004:        (tme_sunfb_memory_update): Pass and reset the first and last bytes
        !          1005:        updated, if any, in the real framebuffer memory, and invalidate any
        !          1006:        outstanding write TLB entries. 
        !          1007:        (tme_sunfb_bus_cycle_bt458): Now tolerate reads and writes to invalid
        !          1008:        addresses. 
        !          1009:        (_tme_sunfb_tlb_fill): Track one outstanding writable TLB entry, and
        !          1010:        the minimum and maximum possible bytes that any writable TLB entry
        !          1011:        could have written since the last framebuffer update. 
        !          1012:        [TME_SUNFB_BUS_TRANSITION] (tme_sunfb_bus_cycle_transition): Added. 
        !          1013:        (tme_sunfb_new): Make sure that the interrupt bus signal is defined. 
        !          1014:        (tme_sun_cgthree): Define the interrupt bus signal. 
        !          1015: 
        !          1016:        * machine/sun/sun-fb.h: Now include <tme/completion.h>.  Now define
        !          1017:        TME_SUNFB_LOG_HANDLE().  Temporarily define TME_SUNFB_BUS_TRANSITION. 
        !          1018:        Changed some tme_bus_addr_t to tme_bus_addr32_t.  In struct tme_sunfb,
        !          1019:        added members for one outstanding writable TLB entry, the offsets of
        !          1020:        the first and last bytes updated in the real framebuffer memory, and
        !          1021:        the interrupt bus signal. 
        !          1022:        Added prototypes for tme_sunfb_bus_cycle_bt458 and
        !          1023:        tme_sunfb_bus_cycle_transition. 
        !          1024: 
        !          1025:        * scsi/scsi-device.c (_tme_scsi_device_cycle): If the device does not
        !          1026:        define a handler for a command, use the illegal command handler. 
        !          1027: 
        !          1028:        * tme/misc.h: Changed tme_misc_cycles_scaling_t to be the widest
        !          1029:        available floating-point type. 
        !          1030:        Updated the tme_misc_cycles_scaled() prototype.  Added a prototype for
        !          1031:        tme_misc_cycles_spin_until(). 
        !          1032: 
        !          1033: Tue Oct 27 00:45:16 2009  Matt Fredette  <[email protected]>
        !          1034: 
        !          1035:        * ic/sparc/sparc-rc-insns.c (_tme_sparc_recode_recode): When recoding
        !          1036:        branches, now get the raw branch displacement as a signed 32 bits,
        !          1037:        doing the full sign-extension to guest width in one place. 
        !          1038:        Added support for branch to .  timing loops.  When the PCs are not
        !          1039:        updated, in addition to checking that the PC advance is zero, check
        !          1040:        that the PC is in the guest PC register. 
        !          1041: 
        !          1042:        * ic/sparc/sparc-timing.c: Added. 
        !          1043: 
        !          1044: Tue Oct 13 22:40:10 2009  Matt Fredette  <[email protected]>
        !          1045: 
        !          1046:        * tools/tme-log-binary-dump.pl:
        !          1047:        * tools/tme-log-binary-udiff.pl:
        !          1048:        * tools/tme-log-binary.pl: Added. 
        !          1049: 
        !          1050: Sat Sep 26 14:55:25 2009  Matt Fredette  <[email protected]>
        !          1051: 
        !          1052:        * ic/sparc/sparc-execute.c: Now define tme_sparc_idle_pcs, instead of
        !          1053:        tme_sparc_idle_type_pc.  Now use TME_SPARC_HAVE_RECODE() to test for
        !          1054:        recode support.  Reworked idle handling.  Now, an idle type must mark
        !          1055:        two consecutive idles without a trap before we go idle.  This
        !          1056:        eliminates the race condition where we would trap, then resume in the
        !          1057:        idle loop past the point of no return of our going idle (i.e., before
        !          1058:        looping to check the possibly updated scheduler state again).  Also
        !          1059:        added support for marking idles in a true idle loop.  No longer go
        !          1060:        idle for the netbsd32-type-0 idle type in an annulled branch delay
        !          1061:        slot. 
        !          1062:        When recode is supported, before checking for a recode thunk, detect a
        !          1063:        control transfer target that is an idle PC, and mark the idle.  When
        !          1064:        recode is not supported, in the control transfer instruction handling,
        !          1065:        detect a control transfer target that is an idle PC, and mark the
        !          1066:        idle. 
        !          1067: 
        !          1068:        * ic/sparc/sparc-impl.h: Added macros for the new idle types, and
        !          1069:        macros for sets of idle types with common characteristics. 
        !          1070:        Replaced TME_SPARC_IDLE_TYPES_SUPPORTED() with
        !          1071:        TME_SPARC_IDLE_TYPE_IS_SUPPORTED().  Added TME_SPARC_IDLE_MARK() and
        !          1072:        TME_SPARC_IDLE_STOP().  Added TME_SPARC_HAVE_RECODE().  In struct
        !          1073:        tme_sparc, added an instruction burst count for when idle.  Now track
        !          1074:        the number of idle marks made since the last trap, and multiple idle
        !          1075:        PCs. 
        !          1076: 
        !          1077:        * ic/sparc/sparc-insns.c: Now include <tme/misc.h>. 
        !          1078:        Now define a constant TME_SPARC_VERSION() around the instructions for
        !          1079:        the different architectures. 
        !          1080:        In all of the sparc32 instructions, renamed TME_SPARC_TRAP_ to
        !          1081:        TME_SPARC32_TRAP_. 
        !          1082:        (tme_sparc32_rdpsr): Removed the sunos32-type-0 idle type detection. 
        !          1083:        This idle type is now detected only in tme_sparc32_wrpsr(). 
        !          1084:        (tme_sparc32_wrpsr): Reworked all sparc32 idle type detection that
        !          1085:        keys off of a wrpsr.  Now use TME_SPARC32_CWP_UPDATE(). 
        !          1086:        (tme_sparc32_rett):
        !          1087:        (tme_sparc32_save_restore): Now use TME_SPARC32_CWP_UPDATE(). 
        !          1088:        [TME_HAVE_INT64_T]: Added the sparc64 instructions. 
        !          1089: 
        !          1090:        * ic/sparc/sparc-misc.c (_tme_sparc_idle_reset): Added.  All functions
        !          1091:        that reset the idle state now call here. 
        !          1092:        (tme_sparc_thread): Added support for the new idle types. 
        !          1093:        (tme_sparc_new): Initialize the idle instruction burst size. 
        !          1094:        (tme_sparc32_trap):
        !          1095:        (tme_sparc64_trap): Traps always do a TME_SPARC_IDLE_STOP(). 
        !          1096:        (tme_sparc_ls_bus_fault): Fixed a bug where we wouldn't advance the
        !          1097:        cycle to get past the fault under TME_SPARC_LSINFO_NO_FAULT.  This
        !          1098:        caused fetches of annulled instructions that fault to loop forever. 
        !          1099:        (tme_sparc_fetch_nearby): Cleaned up the code that gets the current PC
        !          1100:        and the nearby PC, especially making sure that the offset remains
        !          1101:        signed after multiplying it by a sizeof(), and truncating the result
        !          1102:        to the correct address size.  Fixed a bug where we would assert() that
        !          1103:        the ITLB entry applies without checking if it's valid - for various
        !          1104:        reasons the ITLB might be the execute loop's itlb_invalid. 
        !          1105: 
        !          1106:        * ic/sparc/sparc-rc-insns.c (_tme_sparc_recode_recode): No longer
        !          1107:        check for the netbsd32-type-0 idle PC in a branch delay slot.  This
        !          1108:        idle type is now handled as a true idle loop in the execute loop. 
        !          1109: 
        !          1110:        * scsi/scsi-cdrom.c: Now handle
        !          1111:        TME_SCSI_CDB_CDROM_READ_DISC_INFORMATION and
        !          1112:        TME_SCSI_CDB_CDROM_CACHE_SYNC as illegal. 
        !          1113: 
        !          1114:        * tme/scsi/scsi-cdrom.h: Now define
        !          1115:        TME_SCSI_CDB_CDROM_READ_DISC_INFORMATION. 
        !          1116: 
        !          1117: Tue Sep 08 23:15:20 2009  Matt Fredette  <[email protected]>
        !          1118: 
        !          1119:        * machine/sun4u/Makefile.am:
        !          1120:        * machine/sun4u/SUN-ULTRA-1: Added. 
        !          1121: 
        !          1122: Mon Sep 07 15:42:24 2009  Matt Fredette  <[email protected]>
        !          1123: 
        !          1124:        * ic/stp22xx/stp222x-main.c (_tme_stp222x_run): Fixed a bug where we
        !          1125:        would request the UPA bus for an interrupt dispatch even when we
        !          1126:        weren't ready to retry the dispatch. 
        !          1127: 
        !          1128:        * ic/stp22xx/stp22xx.c (tme_stp22xx_cond_sleep_yield): Fixed a bug
        !          1129:        where we wouldn't mark the condition as running under NDEBUG, before
        !          1130:        calling the run function.  If the condition was notified before the
        !          1131:        sleep, since it was still marked idle, it wouldn't be marked as
        !          1132:        notified, and the notify would be lost. 
        !          1133: 
        !          1134:        * libtme/host/x86/rc-x86-conds.c (tme_recode_host_conds_thunk_new):
        !          1135:        Use the new TME_SHIFT() macro when doing host-size shifts of a
        !          1136:        tme_recode_uguest_t, which may be smaller than host-size.  Fixed a bug
        !          1137:        emitting an %rip EA on an x86-64 host. 
        !          1138: 
        !          1139:        * libtme/host/x86/rc-x86-flags.c (tme_recode_host_flags_thunk_new):
        !          1140:        Use the new TME_SHIFT() macro when doing host-size shifts of a
        !          1141:        tme_recode_uguest_t, which may be smaller than host-size.  Fixed a bug
        !          1142:        where the test subs wasn't chaining to the main flags subs. 
        !          1143: 
        !          1144:        * libtme/host/x86/rc-x86-insns.c (_tme_recode_x86_insn_guest): Fixed a
        !          1145:        bad double-host-size guest check. 
        !          1146: 
        !          1147:        * libtme/host/x86/rc-x86-rws.c (tme_recode_host_rw_thunk_new): When
        !          1148:        converting the guest address into the TLB entry page offset, do it at
        !          1149:        the smaller of the host size and the guest read/write address size. 
        !          1150:        (tme_recode_host_rw_thunk_dup): The sign-extension instruction can be
        !          1151:        four bytes, not only less. 
        !          1152: 
        !          1153:        * libtme/host/x86/rc-x86-subs-asm.S (tme_recode_x86_shift): We need to
        !          1154:        extend for all right shifts less than host size, not just those less
        !          1155:        than 32 bits, because the common shra-all code assumes that the
        !          1156:        destination is host-size.  This change only affected x86-64 hosts,
        !          1157:        which also had a REX bug. 
        !          1158: 
        !          1159:        * libtme/host/x86/recode-x86.c (_tme_recode_x86_emit_adjust_sp): Fixed
        !          1160:        a bug where we would overwrite the REX prefix on an x86-64 host. 
        !          1161:        (_tme_recode_x86_raw_reg_binop): Fixed another bug where we used
        !          1162:        addition instead of binary-OR to combine two overlapping values. 
        !          1163:        (tme_recode_host_ic_new): Fixed a TME_RECODE_REG_C inside a REX prefix
        !          1164:        macro. 
        !          1165:        Fixed a REX.B macro for an address that had a size.  When emitting the
        !          1166:        jump chain adjust of the c register, advance thunk_bytes normally,
        !          1167:        then assert that the value of TME_RECODE_X86_OFFSET_JUMP_CHAIN_DIRECT
        !          1168:        is correct, instead of using it to advance thunk_bytes.  Fixed another
        !          1169:        bug where we used addition instead of binary-OR to combine two
        !          1170:        overlapping values. 
        !          1171: 
        !          1172:        * tme/common.h (TME_SHIFT): Added. 
        !          1173: 
        !          1174:        * tme/host/recode-x86.h: An x86-64 host needs a larger value of
        !          1175:        TME_RECODE_HOST_INSN_SIZE_MAX. 
        !          1176: 
        !          1177: Tue Sep 01 00:54:01 2009  Matt Fredette  <[email protected]>
        !          1178: 
        !          1179:        * ic/sparc/Makefile.am: Added sparc-recode.c and stp103x.c to
        !          1180:        tme_ic_sparc_la_SOURCES.  Added sparc-vis-auto.c to BUILT_SOURCES. 
        !          1181:        Added sparc-vis-auto.sh and the sparc recode parts to EXTRA_DIST. 
        !          1182:        Added a target to make sparc-vis-auto.c. 
        !          1183: 
        !          1184:        * ic/sparc/cy7c601.c (tme_ic_,sparc,cy7c601): Initialize many new
        !          1185:        struct tme_sparc members with cy7c601-specific values. 
        !          1186: 
        !          1187:        * ic/sparc/mb86900.c (tme_ic_,sparc,mb86900): Initialize many new
        !          1188:        struct tme_sparc members with mb86900-specific values. 
        !          1189: 
        !          1190:        * ic/sparc/sparc-recode.c: Removed TME_SPARC_RECODE_PAGE_SIZE_LOG2 and
        !          1191:        TME_SPARC_RECODE_PAGE_SIZE.  We now use the ic's actual page size
        !          1192:        everywhere, instead of a fixed sparc recode page size.  The fixed
        !          1193:        sparc recode page size of 4KB forced writes to always be assisted when
        !          1194:        the ic had a larger page size, because DTLB entries for writing were
        !          1195:        never for a full page (since we made the fixed sparc recode page size
        !          1196:        the validity size for cacheable memory, DTLB entries were never bigger
        !          1197:        than that).  All users changed.  Moved _tme_sparc_recode_verify_on
        !          1198:        from sparc-rc-verify.c, and added _tme_sparc_recode_off. 
        !          1199:        Added sparc-rc-ls.c to the set of recode parts included for each
        !          1200:        architecture. 
        !          1201:        Now define TME_SPARC_RECODE_RW_THUNK_INDEX(). 
        !          1202:        (tme_sparc_recode): If recode is off, return immediately. 
        !          1203:        (tme_sparc_recode_dump_insns): Added support for read/write
        !          1204:        instructions. 
        !          1205:        (tme_sparc_recode_init): Allocate and initialize the read-uses
        !          1206:        records.  On a v9 CPU, %r1 through %r7 are addressed through recode
        !          1207:        register window two.  Set all of the recode TLB entry information for
        !          1208:        read/write instructions.  Call the architecture-specific
        !          1209:        initialization for loads and stores. 
        !          1210: 
        !          1211:        * ic/sparc/stp103x.c: Now define TME_STP103X_ICACHE_BLOCK_SIZE. 
        !          1212:        Reorganized struct tme_stp103x slightly, to put everything that is
        !          1213:        recode-verifiable first, and everything that is accessed by loads and
        !          1214:        stores last. 
        !          1215:        (_tme_stp103x_interrupt_check):
        !          1216:        (_tme_stp103x_flush): If we're replaying instructions, return
        !          1217:        immediately. 
        !          1218:        (_tme_stp103x_update_pstate): Fixed a bug where we wouldn't update the
        !          1219:        recode register window offsets. 
        !          1220:        (_tme_stp103x_rdpr): Added. 
        !          1221:        (_TME_SPARC_EXECUTE_OPMAP): Now use _tme_stp103x_rdpr. 
        !          1222:        (_tme_stp103x_ls_cycle_block_ld):
        !          1223:        (_tme_stp103x_ls_cycle_block_st): Save the block for verification. 
        !          1224:        (_tme_stp103x_new): Fixed a bug where we were only allocating a struct
        !          1225:        tme_sparc, and not the larger struct tme_stp103x.  Initialize
        !          1226:        _tme_sparc_ls_asi_misaligned.  Under _TME_SPARC_RECODE_VERIFY,
        !          1227:        initialize the recode verify sizes. 
        !          1228: 
        !          1229:        * ic/stp22xx/stp220x.c:
        !          1230:        * ic/stp22xx/stp222x-main.c: Removed some AUDITs. 
        !          1231: 
        !          1232:        * libtme/host/x86/rc-x86-rws.c: Fixed various bugs where we used a
        !          1233:        size with a TME_RECODE_X86_REX_B() that is for addressing. 
        !          1234:        (_tme_recode_x86_rw_tlb_ref): Fixed a bad assert(). 
        !          1235:        (tme_recode_host_rw_thunk_new): Added support for recode TLB entries
        !          1236:        with a 16-bit context. 
        !          1237:        Added support for offsetting the address when making the TLB entry
        !          1238:        index. 
        !          1239:        The recode TLB entries are now a found directly in the ic structure,
        !          1240:        not found through a pointer. 
        !          1241:        Now emit instructions to check a recode TLB entry's context.  Fixed
        !          1242:        bugs where we would emit a displacement-less EA when the lone base
        !          1243:        register is %bp or %r13. 
        !          1244:        In the double-host-size most-signficant write, we know that its size
        !          1245:        is TME_RECODE_SIZE_HOST. 
        !          1246:        Fixed a bug where we wouldn't do the double-host-size most-significant
        !          1247:        read first, before we destroy the host memory address register.  Fixed
        !          1248:        bugs where we would lose instructions because we forgot to finish and
        !          1249:        restart the thunk, or forgot to advance thunk_bytes. 
        !          1250: 
        !          1251: Mon Aug 31 02:23:41 2009  Matt Fredette  <[email protected]>
        !          1252: 
        !          1253:        * ic/sparc/sparc-rc-ls.c (TME_SPARC_RECODE_RW_FLAG): Removed. 
        !          1254:        (_tme_sparc_recode_ls_assist_check): Added. 
        !          1255:        (_tme_sparc_recode_ls_assist_ld) [_TME_SPARC_RECODE_VERIFY]:
        !          1256:        (_tme_sparc_recode_ls_assist_st) [_TME_SPARC_RECODE_VERIFY]: Call
        !          1257:        _tme_sparc_recode_ls_assist_check(). 
        !          1258:        (tme_sparc_recode_ls_tlb_update): Now take the struct tme_sparc_ls *,
        !          1259:        so we can get the DTLB entry directly.  Added tme_sparc_ireg_t casts
        !          1260:        to the DTLB address check, to avoid doing math in a wider
        !          1261:        tme_bus_addr_t. 
        !          1262:        Force assists for a DTLB entry if it uses special ASIs. 
        !          1263:        Improved the recode TLB entry read/write flags, including handling
        !          1264:        DTLB entries for no-fault loads, addresses with side-effects, and
        !          1265:        endianness changes.  Also, no longer check for DTLB entries that
        !          1266:        support the secondary address space, because we can't assist them
        !          1267:        (mostly because recode read/write instructions only have a single
        !          1268:        default context). 
        !          1269:        All sparc recode TLB entries have a 16-bit context, and update the
        !          1270:        context and the context mismatch read/write flag as needed. 
        !          1271:        (_tme_sparc_recode_ls_init): Improved how the read/write thunks are
        !          1272:        generated, and especially their read/write flags masks.  No longer
        !          1273:        make read/write thunks for accesses to secondary address spaces.  Make
        !          1274:        read/write thunks for no-fault loads. 
        !          1275: 
        !          1276:        * ic/sparc/sparc-rc-verify.c: Define a token for the replay ITLB
        !          1277:        entry. 
        !          1278:        (tme_sparc_recode_verify_begin): Set the token on the replay ITLB
        !          1279:        entry. 
        !          1280:        (_tme_sparc_recode_verify_init): Initialize the token for the replay
        !          1281:        ITLB entry, and mark it as valid. 
        !          1282: 
        !          1283: Mon Aug 31 01:58:38 2009  Matt Fredette  <[email protected]>
        !          1284: 
        !          1285:        * generic/fb-xlat-auto.sh: Now only check framebuffer contents that
        !          1286:        may have been updated for changes. 
        !          1287: 
        !          1288:        * host/gtk/gtk-screen.c (_tme_gtk_screen_th_update): If the
        !          1289:        framebuffer needs a full redraw, force the next translation to
        !          1290:        retranslate everything. 
        !          1291:        (_tme_gtk_screen_mode_change): Now delay forcing the next translation
        !          1292:        until the next screen update. 
        !          1293: 
        !          1294:        * host/posix/posix-memory.c: Defined some macros for sizes of
        !          1295:        cacheables, and the writable TLB entry hash set. 
        !          1296:        Added struct tme_posix_memory_valids.  In struct tme_posix_memory,
        !          1297:        added a mutex.  Fixed a bug where the rwlock was a mutex.  Added
        !          1298:        pointers to any writable TLB entry hash set, a list of valids
        !          1299:        bitmasks.  Added members for the current writable TLB size, and our
        !          1300:        cacheable structure. 
        !          1301:        (_tme_posix_memory_tlbs_invalidate): Added. 
        !          1302:        (_tme_posix_memory_tlb_fill): If this memory is cacheable, return the
        !          1303:        cacheable structure in the TLB entry, and if this is a write, track
        !          1304:        the TLB entry in the hash set and clear the bit for the address' page
        !          1305:        in all valids bitmasks. 
        !          1306:        (_tme_posix_memory_valids_new):
        !          1307:        (_tme_posix_memory_valids_set): Added. 
        !          1308:        (tme_host_posix,memory): If the memory is cacheable, allocate the
        !          1309:        writable TLB entry set, initialize the valids list and the writable
        !          1310:        TLB size, and the cacheable structure. 
        !          1311: 
        !          1312:        * ic/sparc/sparc-execute.c: Now define TME_PRIxSPARCREG. 
        !          1313:        On sparc64, fixed the ASI mask code and set the default memory
        !          1314:        context. 
        !          1315:        [TME_HAVE_RECODE]: Set the default read/write flags for the current
        !          1316:        CPU state. 
        !          1317:        Instead of constructing the invalid ITLB entry, initialize its new
        !          1318:        token and set it on the entry.  Never acquire the external mutex, and
        !          1319:        only call the external check function if the external flag is set. 
        !          1320:        Now save the previous PC.  If we're replaying recoded instructions for
        !          1321:        the verifier, stop replaying if the previous PC was the last to
        !          1322:        replay.  Otherwise, poison it to prevent all recoding.  Added
        !          1323:        (tme_sparc_ireg_t) casts to the ITLB entry address checks, to avoid
        !          1324:        doing math in a wider tme_bus_addr_t.  Now use TME_SPARC_TLB_HASH()
        !          1325:        and TME_SPARC_ITLB_ENTRY() to get the ITLB entry from the array.  Now
        !          1326:        check the context on an ITLB entry.  Now, instead of filling the ITLB
        !          1327:        entry ourselves, just do a slow load of the instruction, which will
        !          1328:        take care of everything, including fetching the instruction into the
        !          1329:        memory buffer if needed.  Since idle loop detection can't take place
        !          1330:        in the instruction executor when recode is in use, moved the
        !          1331:        netbsd32-type-0 detection into tme_sparc32_wrpsr().  In the rare case
        !          1332:        that an annulled instruction is also a branch target
        !          1333:        (which can only happen if there are two branches in a row, where the
        !          1334:        second one annuls), make sure we don't try to recode starting at the
        !          1335:        annulled instruction. 
        !          1336:        Use TME_SPARC_G0_OFFSET(ic) to find the globals. 
        !          1337:        [TME_HAVE_RECODE]: Now recode instructions, run recoded instructions
        !          1338:        thunks, and replay the same instructions through the normal executor
        !          1339:        to compare the effects. 
        !          1340:        TME_SPARC_IREG_IMM has been replaced by TME_SPARC_IREG_TMP(0).  Added
        !          1341:        support for the sparc64 format two instructions.  Added support for
        !          1342:        the sparc64 %pstate.AM in the control transfers. 
        !          1343: 
        !          1344:        * ic/sparc/sparc-insns-auto.sh: Define _tme_sparc_float_null. 
        !          1345:        Now emit the fpop1 and fpop2 instructions.  Now emit instructions for
        !          1346:        sparc64, including the new sdivx, udivx, mulx, ldx, stx, ldxa, stxa,
        !          1347:        casxa, casa, and the alternate floating-point load and store
        !          1348:        instructions. 
        !          1349:        (_tme_sparc32_alternate_asi_mask): Get the flags for an ASI and build
        !          1350:        a mask using the new ASI-mask macros.  If this ASI has a special
        !          1351:        handler, force a slow load or store by making the ASI mask undefined. 
        !          1352:        (_tme_sparc64_alternate_asi_mask):
        !          1353:        (_tme_sparc${arch}_fpu_mem_fpreg): Added. 
        !          1354:        (tme_sparc${arch}_udiv):
        !          1355:        (tme_sparc${arch}_udivcc):
        !          1356:        (tme_sparc${arch}_sdiv):
        !          1357:        (tme_sparc${arch}_sdivcc): Trap on division by zero, and added
        !          1358:        overflow handling for the cc instructions.  Fixed a sparc64 bug where
        !          1359:        we would only set %icc.Z when the 64-bit result was zero. 
        !          1360:        In the load/store instructions, get the right address for the sparc64
        !          1361:        casa and casxa instructions, and when %pstate.AM is set.  Get the
        !          1362:        context for sparc64 alternate instructions.  Make a mask of ASI flags
        !          1363:        that will trigger a slow load/store.  Check the DTLB entry's context. 
        !          1364:        Added (tme_bus_addr${arch}_t) casts to the DTLB address check.  Check
        !          1365:        that the ASI mask in the DTLB entry allows fast transfers.  For a slow
        !          1366:        transfer, call the new tme_sparc${arch}_ls().  Now, allow the slow
        !          1367:        function to complete an alternate load.  Get the byte order of the
        !          1368:        access and do byteswapping as needed. 
        !          1369:        (tme_sparc${arch}_${insn}): Added support for the sparc64 %pstate.AM
        !          1370:        and possible address space hole. 
        !          1371:        (tme_sparc${arch}_ldf*):
        !          1372:        (tme_sparc${arch}_stf*): On sparc64, call the ASI misaligned function
        !          1373:        to see if the address is misaligned.  Before the memory access, now
        !          1374:        call _tme_sparc${arch}_fpu_mem_fpreg() to check for any traps and to
        !          1375:        get the floating-point register. 
        !          1376:        (tme_sparc${arch}_lddf*):
        !          1377:        (tme_sparc${arch}_stdf*): On sparc64, call the ASI misaligned function
        !          1378:        to see if the address is misaligned.  Before the memory access, now
        !          1379:        call _tme_sparc${arch}_fpu_mem_fpreg() to check for any traps and to
        !          1380:        get the floating-point register.  Added support for sparc64
        !          1381:        fully-aligned and 32-bit aligned accesses. 
        !          1382:        (tme_sparc${arch}_ldfsr):
        !          1383:        (tme_sparc${arch}_stfsr): Now check for traps with
        !          1384:        _tme_sparc${arch}_fpu_mem().  Added support for the sparc64 ldxfsr and
        !          1385:        stxfsr. 
        !          1386:        (tme_sparc${arch}_atomic): Added. 
        !          1387:        (tme_sparc${arch}_load):
        !          1388:        (tme_sparc${arch}_store): These functions are no longer called
        !          1389:        directly by instruction functions.  They now only do final loads and
        !          1390:        stores (as opposed to pre-access fault checking, DTLB filling, etc.). 
        !          1391:        (tme_sparc${arch}_ls): Added.  This is the function called by
        !          1392:        instruction functions to do a slow access.  This coordinates special
        !          1393:        ASIs, address mapping, DTLB filling, pre-access fault checking, and
        !          1394:        slow load, store, and atomic cycles. 
        !          1395: 
        !          1396:        * ic/sparc/sparc-misc-auto.sh: Define the sparc64 alternate, MMU, and
        !          1397:        interrupt globals.  Define TME_SPARC_IREG_INSN. 
        !          1398:        Replaced TME_SPARC_IREG_IMM with TME_SPARC_IREG_TMP().  Defined many
        !          1399:        sparc64 architected and internal registers. 
        !          1400: 
        !          1401:        * ic/sparc/sparc-misc.c (_tme_sparc_bus_signal): Now recognize the bus
        !          1402:        grant signal.  Now track both assertion and negation of halt and
        !          1403:        reset.  Changed the external signal indications to true atomic flags,
        !          1404:        and set the external atomic flag after any changes.  Moved the
        !          1405:        condition variable notify inside the mutex lock. 
        !          1406:        (_tme_sparc_bus_interrupt): Now update the external IPL value with an
        !          1407:        atomic write, and set the external atomic flag afterwards.  Moved the
        !          1408:        condition variable notify inside the mutex lock. 
        !          1409:        (tme_sparc_idle): Now call the ic-specific external check function,
        !          1410:        instead of the_sparc32_external_check(). 
        !          1411:        (tme_sparc_thread): Added support for TME_SPARC_MODE_OFF. 
        !          1412:        (_tme_sparc_generic_tlb_fill): Now take a tme_bus_addr_t.  Don't set
        !          1413:        the ASI mask any more, the slow load/store function has arranged or
        !          1414:        will arrange for it to be set. 
        !          1415:        (_tme_sparc_connection_score):
        !          1416:        (_tme_sparc_connections_new): Replaced bus connection TLB set allocate
        !          1417:        references with TLB set add references.  Added support for UPA bus
        !          1418:        connections. 
        !          1419:        (_tme_sparc_connection_make): Replaced bus connection TLB set allocate
        !          1420:        references with TLB set add references.  Added support for UPA bus
        !          1421:        connections.  Now initialize the TLB set and add it to the bus,
        !          1422:        getting the maximum context back in the v7 case. 
        !          1423:        (tme_sparc_new): Added support for the tick-frequency and
        !          1424:        prom-delay-factor options.  Initialize the cycles scaling.  The
        !          1425:        processor starts off.  Initialize the external state, CWP offsets and
        !          1426:        the ASI flags.  Initialize recoding. 
        !          1427:        (tme_sparc_redispatch):
        !          1428:        (tme_sparc32_trap_preinstruction): End any recode verifying. 
        !          1429:        (tme_sparc32_external_check): Now take a flag that says whether or not
        !          1430:        the external mutex is locked.  Update the new external state as
        !          1431:        needed. 
        !          1432:        (tme_sparc32_trap): End any recode verifying.  Now use
        !          1433:        TME_SPARC32_CWP_UPDATE() to update the CWP offsets, and
        !          1434:        TME_SPARC_REG_INDEX() to find %r17.  Now log traps. 
        !          1435:        (tme_sparc32_fetch_slow):
        !          1436:        (tme_sparc32_bus_fault): Removed. 
        !          1437:        (tme_sparc32_ls_bus_cycle):
        !          1438:        (tme_sparc32_ls_address_map):
        !          1439:        (tme_sparc32_ls_trap):
        !          1440:        (tme_sparc_nnpc_trap):
        !          1441:        (tme_sparc_ls_bus_fault):
        !          1442:        (tme_sparc64_trap_preinstruction):
        !          1443:        (tme_sparc64_trap):
        !          1444:        (tme_sparc64_trap_error_state): Added. 
        !          1445:        (tme_sparc_callout_relock): Now check the ITLB entry's context. 
        !          1446:        (tme_sparc32_dump): Replaced TME_SPARC_CWP_OFFSET() with hard-coded
        !          1447:        multiplications by 16. 
        !          1448:        (tme_sparc32_dump_memory): Converted into tme_sparc64_dump_memory(). 
        !          1449: 
        !          1450:        * ic/sparc/sparc-rc-insns.c: Removed TME_SPARC_RECODE_INSN_STORE;
        !          1451:        along with loads, stores are now detected by their
        !          1452:        TME_RECODE_OPCODE_RW opcode.  Added TME_SPARC_RECODE_INSN_UPDATE_INSN. 
        !          1453:        TME_SPARC_RECODE_INSN_ASSIST now includes
        !          1454:        TME_SPARC_RECODE_INSN_UPDATE_INSN.  Replaced
        !          1455:        TME_SPARC_RECODE_INSN_ASSIST_STORE with TME_SPARC_RECODE_INSN_ST, and
        !          1456:        added TME_SPARC_RECODE_INSN_LD and TME_SPARC_RECODE_INSN_LDA.  These
        !          1457:        are now used for the load and store instructions that can be recode
        !          1458:        read/write instructions, and TME_SPARC_RECODE_INSN_ASSIST_FULL |
        !          1459:        TME_SPARC_RECODE_INSN_NO_RD is used for stores (usually alternate
        !          1460:        stores) that can't be.  Fixed a bug where std and stda were missing
        !          1461:        TME_SPARC_RECODE_INSN_NO_RD. 
        !          1462:        casx and casxa are now TME_SPARC_RECODE_INSN_ASSIST_FULL. 
        !          1463:        (tme_sparc_recode_insn_assist_redispatch): Added, from the old
        !          1464:        _tme_sparc_recode_insn_assist_redispatch(), all callers changed.  Now
        !          1465:        check that the ITLB entry hasn't been poisoned by
        !          1466:        tme_sparc_callout_relock(), and that the remaining instruction burst
        !          1467:        is still nonzero. 
        !          1468:        (_tme_sparc_recode_insn_assist_store): Removed. 
        !          1469:        (_tme_sparc_recode_insn_assist_full): Now track statistics on assisted
        !          1470:        opcodes. 
        !          1471:        (_tme_sparc_recode_recode): Now use the ic's actual page size
        !          1472:        everywhere, instead of a fixed sparc recode page size.  The fixed
        !          1473:        sparc recode page size of 4KB forced writes to always be assisted when
        !          1474:        the ic had a larger page size, because DTLB entries for writing were
        !          1475:        never for a full page (since we made the fixed sparc recode page size
        !          1476:        the validity size for cacheable memory, DTLB entries were never bigger
        !          1477:        than that). 
        !          1478:        For the v9 movr, fixed bugs where we had the wrong opcode and didn't
        !          1479:        set the right conditions thunk.  Added support for the v9 ld*a
        !          1480:        instructions, because they may be used for speculative loads, which we
        !          1481:        do want to handle with recode read instructions. 
        !          1482:        For BPcc and Bicc, extract the branch displacement using 32-bit types
        !          1483:        for as long as possible.  Now test TME_SPARC_RECODE_INSN_UPDATE_INSN
        !          1484:        to see if an instruction always or sometimes needs an assist, instead
        !          1485:        of just checking for TME_RECODE_OPCODE_GUEST. 
        !          1486:        Fixed a bug in the v9 32-bit shifts where we put the extension source
        !          1487:        size in the immediate field, instead of the second source operand
        !          1488:        field. 
        !          1489:        Reused the old TME_SPARC_RECODE_INSN_STORE support for generating an
        !          1490:        assisted store for generating recode read/write instructions. 
        !          1491: 
        !          1492: Sun Aug 30 17:06:38 2009  Matt Fredette  <[email protected]>
        !          1493: 
        !          1494:        * ic/sparc/sparc-fpu-auto.sh (_tme_sparc_fpu_fcc_${precision}): Added
        !          1495:        support for the additional fccN on sparc64. 
        !          1496:        (tme_sparc_fpu_fpop[12]): Added support for encoded floating-point
        !          1497:        register numbers, recode verification, FMOV*cc, FxTO*, F*TOx, FNEGd,
        !          1498:        FABSd.  Now dirty any destination register. 
        !          1499: 
        !          1500:        * ic/sparc/sparc-impl.h: Replaced all of the old TME_SPARC_TRAP_
        !          1501:        macros with architecture-specific trap macros, whose values now
        !          1502:        include priority and other flags.  For those trap names that are
        !          1503:        common across architectures, a new TME_SPARC_TRAP() macro can be used
        !          1504:        to expand to the right value for the current architecture.  All users
        !          1505:        changed.  For sparc64, added the FPRS, TSTATE, WSTATE, VER, XCC, and
        !          1506:        VIS GSR fields, and added more PSTATE fields.  Added the sparc VIS
        !          1507:        ASIs. 
        !          1508:        Added macros for the SPARC integer conditions.  Added
        !          1509:        TME_SPARC_MODE_OFF and TME_SPARC_TL_MAX.  Added a set of macros for
        !          1510:        updating the register window offsets for a new CWP, that update
        !          1511:        separate offsets for the output, local, and input registers, and also
        !          1512:        the recode register window offsets.  This simplifies
        !          1513:        TME_SPARC_REG_INDEX.  Now that there are only flat DTLB and ITLB
        !          1514:        arrays, added a TME_SPARC_TLB_HASH() to hash an address into an array. 
        !          1515:        TME_SPARC_DTLB_ENTRY() and TME_SPARC_ITLB_ENTRY() now take one of
        !          1516:        these hashes, instead of an address.  The slow load and store
        !          1517:        functions, and any function that supports a slow load or store, now
        !          1518:        take an expanded set of information about the access. 
        !          1519:        Added macros for defining masks of load/store faults and memory
        !          1520:        features. 
        !          1521:        Now define TME_SPARC_FPU_FPREG_NUMBER_UNDEF, TME_SPARC_FPU_DIRTY(),
        !          1522:        and TME_SPARC_FPU_IS_DISABLED().  Fixed TME_SPARC_FORMAT3_RD_ODD() to
        !          1523:        take the register set name for the architecture. 
        !          1524:        Added TME_SPARC_INSN_FPU_ENABLED, which TME_SPARC_INSN_FPU now uses. 
        !          1525:        Removed TME_SPARC_INSN_FPU_STORE. 
        !          1526:        [TME_HAVE_RECODE]: Now define macros for sparc recode. 
        !          1527:        (tme_sparc_log_start): Fixed sparc64 support.  Now define macros for
        !          1528:        fixing PROM delay factors.  Now define TME_SPARC_MEMORY_FLAGS() and
        !          1529:        _TME_SPARC_MEMORY_FLAGS().  Removed TME_SPARC_ASI_DATA(). 
        !          1530:        Now typedef _tme_sparc64_format3 and _tme_sparc_ls_asi_handler.  Added
        !          1531:        struct tme_sparc_ls. 
        !          1532:        [TME_HAVE_RECODE]: Added struct tme_sparc_recode_cacheable.  In struct
        !          1533:        tme_sparc, added the cycles scaling, replaced the single CWP offset
        !          1534:        with individual offsets for the global, output, local, and input
        !          1535:        registers.  Added members for sparc64.  Expanded the
        !          1536:        implementation-dependent data and functions, especially for the new
        !          1537:        load/store architecture.  Retyped the instruction burst counters as
        !          1538:        tme_uint32_t, since recode requires that.  Replaced the old TLB entry
        !          1539:        set pointers with a single sparc TLB entry array and a complementary
        !          1540:        array of tokens or recode TLB entries.  Added per-ASI information, and
        !          1541:        members for memory context.  Added members for the new bus external
        !          1542:        interface.  Changed the memory buffer to be a union of all of the
        !          1543:        integral types.  Expanded the number of FPU registers and added the
        !          1544:        sparc64 XFSR.  Added the VIS state.  Fixed a bug where the sparc64
        !          1545:        idle PC was a tme_uint32_t.  Under [TME_HAVE_RECODE], added all of the
        !          1546:        state needed for sparc recode.  Added more statistics.  Changed many
        !          1547:        prototypes, generally for the new load/store architecture, trap
        !          1548:        changes, sparc recode verification, and sparc64 support. 
        !          1549: 
        !          1550:        * ic/sparc/sparc-vis-auto.sh (tme_sparc_vis)
        !          1551:        [TME_SPARC_RECODE_VERIFY]: Clear the rd buffer. 
        !          1552:        (_tme_sparc${arch}_vis_ls_cycle_pst${insn}): Fixed a bug where we
        !          1553:        would get bit two of the store mask instead of bit one. 
        !          1554:        (tme_sparc${arch}_vis_ls_asi_pst): Fixed some comments about trap
        !          1555:        handling, and check that our caller checked that the FPU is enabled
        !          1556:        and not in exception_pending mode. 
        !          1557:        (tme_sparc${arch}_vis_ls_asi_fl): Fixed some comments about trap
        !          1558:        handling, and check that our caller checked that the FPU is enabled
        !          1559:        and in execute mode. 
        !          1560:        (tme_sparc${arch}_vis_ls_asi_misaligned): Added. 
        !          1561: 
        !          1562:        * libtme/log-prf.c: Added support for two 'l' flags.  Use the new
        !          1563:        PRF_OUT_ARG_CODE() for each argument type found. 
        !          1564: 
        !          1565:        * libtme/log.c: Define macros for the argument type codes.  Define
        !          1566:        prf_lld(x) depending on whether or not long long int is supported, and
        !          1567:        _TME_LOG_IF_INT64_T() depending on whether or not tme_int64_t is
        !          1568:        supported.  Define _TME_LOG_ALIGN_ANY(). 
        !          1569:        Typedef tme_log_arg_code_t. 
        !          1570:        (LOG_PRF_LOCALS): Added support for two 'l' flags, and for long long
        !          1571:        int arguments. 
        !          1572:        (tme_output_append):
        !          1573:        (tme_output_append_error):
        !          1574:        (tme_output_prepend):
        !          1575:        (tme_output_prepend_error): Define a dummy PRF_OUT_ARG_CODE(). 
        !          1576:        (_tme_log_arg_code): Added. 
        !          1577:        (tme_log_part): Added support for binary mode logging.  Define a dummy
        !          1578:        PRF_OUT_ARG_CODE() for text mode logging. 
        !          1579: 
        !          1580:        * tme/kgdb.h: Added. 
        !          1581: 
        !          1582:        * tmesh/tmesh.c: Added macros, types, and globals for binary mode
        !          1583:        logging. 
        !          1584:        (_tmesh_log_output_binary): Added. 
        !          1585:        (_tmesh_log_open):
        !          1586:        (main): Added support for binary mode logging. 
        !          1587: 
        !          1588: Sun Aug 30 14:42:15 2009  Matt Fredette  <[email protected]>
        !          1589: 
        !          1590:        * machine/sun2/sun2-control.c (_tme_sun2_control_cycle_handler):
        !          1591:        Changed some tme_bus_addr_t to tme_bus_addr32_t.  Now call
        !          1592:        _tme_sun2_mmu_context_user_set() on a write to the enable register, in
        !          1593:        case the boot state changed. 
        !          1594: 
        !          1595:        * machine/sun2/sun2-impl.h: In struct tme_sun2, removed the old
        !          1596:        "special ROM [reset] read bus cycles" support, and added a pointer to
        !          1597:        the m68k bus context register.  Removed the prototypes for
        !          1598:        _tme_sun2_mmu_tlb_set_allocate(), _tme_sun2_mmu_tlb_set_add(), and
        !          1599:        _tme_sun2_mmu_reset().  Added a prototype for
        !          1600:        _tme_sun2_mmu_tlb_set_add(). 
        !          1601: 
        !          1602:        * machine/sun2/sun2-mainbus.c (_tme_sun2_command): No longer call
        !          1603:        _tme_sun2_mmu_reset(). 
        !          1604:        (_tme_sun2_connection_score):
        !          1605:        (_tme_sun2_connections_new): Replaced bus connection TLB set allocate
        !          1606:        references with TLB set add references. 
        !          1607:        (tme_machine_sun2): Initialize the m68k bus context register pointer. 
        !          1608: 
        !          1609:        * machine/sun2/sun2-mmu.c: Changed some tme_bus_addr_t to
        !          1610:        tme_bus_addr32_t.  Now define TME_SUN2_CONTEXT_COUNT. 
        !          1611:        (_tme_sun2_m68k_tlb_fill):
        !          1612:        (_tme_sun2_mmu_context_user_set): Now handle the boot state, and m68k
        !          1613:        TLB filling in general, more like how sun3 does. 
        !          1614:        (_tme_sun2_bus_tlb_fill): Now take a tme_bus_addr_t. 
        !          1615:        (_tme_sun2_mmu_tlb_set_allocate):
        !          1616:        (_tme_sun2_reset_cycle):
        !          1617:        (_tme_sun2_mmu_reset): Removed. 
        !          1618:        (_tme_sun2_mmu_tlb_set_add): Added. 
        !          1619:        (_tme_sun2_mmu_new): Now use TME_SUN2_CONTEXT_COUNT instead of a
        !          1620:        hard-coded 8. 
        !          1621: 
        !          1622:        * machine/sun3/sun3-control.c (_tme_sun3_memerr_test_cycle_handler):
        !          1623:        Now use tme_token_invalidate() instead of the removed
        !          1624:        tme_bus_tlb_invalidate(). 
        !          1625: 
        !          1626:        * machine/sun3/sun3-impl.h: In struct tme_sun3, added a pointer to the
        !          1627:        m68k bus context register, removed the boot state TLB entry tracking
        !          1628:        array, and track SDVMA TLB entry tokens instead of the TLB entries
        !          1629:        themselves.  Replaced the _tme_sun3_mmu_tlb_set_allocate() with the
        !          1630:        _tme_sun3_mmu_tlb_set_add() prototype. 
        !          1631: 
        !          1632:        * machine/sun3/sun3-mainbus.c (_tme_sun3_connection_score):
        !          1633:        (_tme_sun3_connections_new): Replaced bus connection TLB set allocate
        !          1634:        references with TLB set add references. 
        !          1635: 
        !          1636:        * machine/sun3/sun3-mmu.c: Changed some tme_bus_addr_t to
        !          1637:        tme_bus_addr32_t.  Now define TME_SUN3_CONTEXT_COUNT. 
        !          1638:        (_tme_sun3_tlb_fill): No longer track data TLB entries filled in the
        !          1639:        boot state.  Since there is no backing TLB entry concept any more, the
        !          1640:        memory error TLB entry pointer tracked is the real TLB entry pointer. 
        !          1641:        (_tme_sun3_bus_tlb_fill): Now take a tme_bus_addr_t.  Now track and
        !          1642:        invalidate SDVMA TLB entry tokens, instead of the TLB entries
        !          1643:        themselves.  Call tme_sun_mmu_context_add() to associate the SDVMA TLB
        !          1644:        entry with the current context. 
        !          1645:        (_tme_sun3_mmu_sdvma_change): Now invalidate the SDVMA TLB entry
        !          1646:        tokens, instead of the SDVMA TLB entries themselves. 
        !          1647:        (_tme_sun3_mmu_context_set): No longer invalidate boot-state data
        !          1648:        TLBs, and instead factor the boot state into the bus context presented
        !          1649:        to the m68k, but do invalidate all SDVMA TLBs that depended on the
        !          1650:        previous context. 
        !          1651:        (_tme_sun3_mmu_tlb_set_allocate): Removed. 
        !          1652:        (_tme_sun3_mmu_tlb_set_add): Added. 
        !          1653:        (_tme_sun3_mmu_new): Internal context zero is no longer used for the
        !          1654:        boot state. 
        !          1655: 
        !          1656:        * machine/sun4/sun4-impl.h: In struct tme_sun4, added a token for the
        !          1657:        cache internal TLB entry, a pointer to a v7 CPU bus context register,
        !          1658:        removed the boot state TLB entry tracking array, and track SDVMA TLB
        !          1659:        entry tokens instead of the TLB entries themselves.  Replaced the
        !          1660:        _tme_sun44c_mmu_tlb_set_allocate() with the
        !          1661:        _tme_sun44c_mmu_tlb_set_add() prototype.  In the
        !          1662:        _tme_sun44c_tlb_fill_bus() prototype, fixed a tme_uint32_t to a
        !          1663:        tme_bus_addr_t. 
        !          1664: 
        !          1665:        * machine/sun4/sun4-mainbus.c (_tme_sun4_connection_score):
        !          1666:        (_tme_sun4_connections_new): Replaced bus connection TLB set allocate
        !          1667:        references with TLB set add references. 
        !          1668: 
        !          1669:        * machine/sun4/sun44c-cache.c (_tme_sun44c_cache_cycle_bus):
        !          1670:        (_tme_sun44c_tlb_fill_cache): Now use tme_token_invalidate() instead
        !          1671:        of the removed tme_bus_tlb_invalidate(). 
        !          1672:        (_tme_sun44c_cache_new): Initialize the token and set it on the cache
        !          1673:        internal TLB entry. 
        !          1674: 
        !          1675:        * machine/sun4/sun44c-memerr.c (_tme_sun44c_memerr_cycle_bus):
        !          1676:        (_tme_sun44c_tlb_fill_memerr): Now use tme_token_invalidate() instead
        !          1677:        of the removed tme_bus_tlb_invalidate(). 
        !          1678: 
        !          1679:        * machine/sun4/sun44c-mmu.c: Changed some tme_bus_addr_t to
        !          1680:        tme_bus_addr32_t.  Now define TME_SUN44C_CONTEXT_COUNT_MAX. 
        !          1681:        (_tme_sun44c_tlb_fill_mmu): No longer track data TLB entries filled in
        !          1682:        the boot state. 
        !          1683:        (_tme_sun44c_tlb_fill_sparc): Now use TME_SPARC_ASI_MASK_SPECIAL() to
        !          1684:        make the ASI mask for control space. 
        !          1685:        (_tme_sun44c_tlb_fill_bus): Now take a tme_bus_addr_t.  Now track and
        !          1686:        invalidate SDVMA TLB entry tokens, instead of the TLB entries
        !          1687:        themselves.  Call tme_sun_mmu_context_add() to associate the SDVMA TLB
        !          1688:        entry with the current context. 
        !          1689:        (_tme_sun44c_mmu_sdvma_change): Now invalidate the SDVMA TLB entry
        !          1690:        tokens, instead of the SDVMA TLB entries themselves. 
        !          1691:        (_tme_sun44c_mmu_context_set): No longer invalidate boot-state data
        !          1692:        TLBs, and instead factor the boot state into the bus context presented
        !          1693:        to the SPARC, but do invalidate all SDVMA TLBs that depended on the
        !          1694:        previous context. 
        !          1695:        (_tme_sun44c_mmu_tlb_set_allocate): Removed. 
        !          1696:        (_tme_sun44c_mmu_tlb_set_add): Added. 
        !          1697:        (_tme_sun44c_mmu_new): Internal context zero is no longer used for the
        !          1698:        boot state. 
        !          1699: 
        !          1700:        * tme/Makefile.am: Added host and bus to SUBDIRS.  Added recode.h,
        !          1701:        token.h, and completion.h to pkginclude_HEADERS. 
        !          1702: 
        !          1703:        * tme/common.h: Added support for 64-bit byteswapping.  When
        !          1704:        tme_uint64_t is the gcc unsigned long long, define
        !          1705:        _TME_SHIFTMAX_INT64_T and TME_PRI64.  Now define size-specific printf
        !          1706:        formats. 
        !          1707: 
        !          1708:        * tme/connection.h: In struct tme_connection, added an opaque
        !          1709:        identifier for an element to use with its connections.  Now define
        !          1710:        TME_CONNECTION_BUS_UPA. 
        !          1711: 
        !          1712:        * tme/log.h: Added support for different log modes, and for the new
        !          1713:        binary log mode. 
        !          1714: 
        !          1715:        * tme/misc.h: Added tme_misc_cycles_scaling_t.  Added prototypes for
        !          1716:        tme_value64 tme_misc_cycles_scaled(), tme_misc_cycles_scaling(),
        !          1717:        tme_misc_cycles_per_ms(), and tme_misc_cycles(). 
        !          1718: 
        !          1719:        * tme/recode.h: Added macros, types, and other support for the
        !          1720:        read/write instructions. 
        !          1721:        Increased TME_RECODE_REG_GUEST_WINDOW_UNDEF from two to three, and
        !          1722:        redid tme register information window macros, for sparc64. 
        !          1723:        Added the read-uses records support. 
        !          1724: 
        !          1725:        * tme/token.h (tme_token_busy): Make a write-before-read barrier after
        !          1726:        setting the busy flag. 
        !          1727:        (tme_token_invalidate_nosync): Added. 
        !          1728: 
        !          1729:        * tme/host/recode-x86.h: Now define TME_RECODE_HOST_RW_THUNK, and
        !          1730:        macros for making the read/write flags. 
        !          1731:        In TME_RECODE_X86_IC, added a member for tracking any loaded register
        !          1732:        window offset around an if/endif. 
        !          1733: 
        !          1734:        * tme/ic/sparc.h: Redid the ASI mask system to work better for
        !          1735:        sparc64, which uses many more ASIs, many of which do the same address
        !          1736:        translation.  In struct tme_sparc_tlb, added a context member and a
        !          1737:        link member.  The latter is for linking the TLB entry to any real
        !          1738:        SPARC MMU object. 
        !          1739: 
        !          1740:        * tme/machine/sun.h: Removed the prototypes for
        !          1741:        tme_sun_mmu_tlbs_context_set() and tme_sun_mmu_tlb_set_allocate(), and
        !          1742:        added the prototypes for tme_sun_mmu_context_add(),
        !          1743:        tme_sun_mmu_context_switched(), and tme_sun_mmu_tlb_set_add(). 
        !          1744:        Added the prototype for tme_sun_cgsix(). 
        !          1745: 
        !          1746: Sat Aug 29 21:48:57 2009  Matt Fredette  <[email protected]>
        !          1747: 
        !          1748:        * bus/multibus/3c400.c (_tme_3c400_tlb_fill): Truncate the address
        !          1749:        from the wider tme_bus_addr_t into a tme_bus_addr32_t local. 
        !          1750: 
        !          1751:        * bus/sbus/sun-fbs4.c (tme_bus_sbus,cgsix): Added. 
        !          1752: 
        !          1753:        * ic/am9513.c ic/isil7170.c ic/mm58167.c machine/sun/sun-bwtwo.c
        !          1754:          tme/ic/am9513.h tme/ic/isil7170.h tme/ic/mk48txx.h tme/ic/z8530.h:
        !          1755: 
        !          1756:          Changed some tme_bus_addr_t to tme_bus_addr32_t. 
        !          1757: 
        !          1758:        * ic/mk48txx.c: Now define the eight registers beginning with the
        !          1759:        watchdog register.  Changed some tme_bus_addr_t to tme_bus_addr32_t. 
        !          1760:        (TME_MK48TXX_REG_FIRST):
        !          1761:        (_tme_mk48txx_bus_cycle): Added support for the mk48t59. 
        !          1762:        (tme_ic_,mk48txx,mk48t59): Added. 
        !          1763: 
        !          1764:        * ic/ncr89c105.c ic/stp22xx/stp222x-impl.h ic/stp22xx/stp222x-iommu.c
        !          1765:          ic/stp22xx/stp222x-stc.c ic/stp22xx/stp222x-timer.c
        !          1766:          ic/stp22xx/stp22xx-impl.h ic/stp22xx/stp22xx.c:
        !          1767: 
        !          1768:          Removed some AUDITs. 
        !          1769: 
        !          1770:        * ic/nec765.c: In struct tme_nec765, now store the i82077 DOR. 
        !          1771:        (_tme_nec765_reset): Fixed a bug where the second argument was
        !          1772:        supposed to be nonzero for a hard reset. 
        !          1773:        (_tme_nec765_bus_cycle): For the check interrupts command, return the
        !          1774:        current cylinder.  Added support for the calibrate command and the
        !          1775:        i82077 DOR register.  On a request master cycle, don't return that the
        !          1776:        controller is busy. 
        !          1777:        (tme_ic_,nec765,i82077): Added. 
        !          1778: 
        !          1779:        * ic/stp2024.c (_tme_stp2024_cycle_sbus): Fixed bugs where we were
        !          1780:        byteswapping values read, even though tme_bus_cycle_xfer_reg() takes
        !          1781:        care of that. 
        !          1782: 
        !          1783:        * ic/z8530.c: Changed some tme_bus_addr_t to tme_bus_addr32_t. 
        !          1784:        (_tme_z8530_callout): Now add TME_BUS_SIGNAL_EDGE to the interrupt
        !          1785:        callout. 
        !          1786: 
        !          1787:        * libtme/recode-notes.txt: Added. 
        !          1788: 
        !          1789:        * tme/generic/float.h: Now define TME_FLOAT_FORMAT_NULL. 
        !          1790: 
        !          1791:        * tme/generic/ic.h: Increased TME_IC_IREGS_SIZE. 
        !          1792: 
        !          1793: Sat Aug 29 19:47:52 2009  Matt Fredette  <[email protected]>
        !          1794: 
        !          1795:        * generic/bus-device-auto.sh: Moved TME_BUS_ROUTER_INIT_INDEX to
        !          1796:        bus-device.h. 
        !          1797:        (tme_bus_device_dma_${name}_${i_width}): Replaced the old TLB entry
        !          1798:        reserve/back mechanism with passing the TLB entry's token and a simple
        !          1799:        structure copy. 
        !          1800: 
        !          1801:        * generic/bus-el.c (_tme_bus_tlb_set_allocate): Removed
        !          1802:        (_tme_bus_tlb_set_add): Added, from the old
        !          1803:        _tme_bus_tlb_set_allocate(). 
        !          1804:        (_tme_bus_connections_new): Provide _tme_bus_tlb_set_add() instead of
        !          1805:        _tme_bus_tlb_set_allocate(). 
        !          1806: 
        !          1807:        * generic/bus.c (tme_bus_tlb_set_allocate): Removed. 
        !          1808:        (tme_bus_tlb_set_add): Added, from the old tme_bus_tlb_set_allocate(). 
        !          1809:        (tme_bus_tlb_set_invalidate): Added. 
        !          1810:        (tme_bus_tlb_map): Fixed a bug where we were using a long to hold a
        !          1811:        bus address offset, instead of a tme_bus_addr_t. 
        !          1812:        (tme_bus_tlb_construct):
        !          1813:        (tme_bus_tlb_back):
        !          1814:        (tme_bus_tlb_invalidate): Removed.  Now a TLB's token, not an entry
        !          1815:        itself, is tracked by responders. 
        !          1816:        (tme_bus_tlb_initialize): Now initialize a TLB entry to be not
        !          1817:        cacheable. 
        !          1818: 
        !          1819:        * ic/m68k/m68k-execute.c (_TME_M68K_EXECUTE_NAME): Now get the
        !          1820:        instruction TLB entry directly.  Since TME_M68K_TLB_OK_FAST_READ was
        !          1821:        removed, manually check everything about the instruction TLB entry,
        !          1822:        including the new TLB context value.  Added some (tme_bus_addr32_t)
        !          1823:        casts as needed, to avoid doing wider math when tme_bus_addr_t is
        !          1824:        wider.  Replaced tme_bus_tlb_is_valid() and tme_m68k_tlb_is_valid()
        !          1825:        uses with tme_m68k_tlb_is_valid() and tme_m68k_tlb_is_invalid(). 
        !          1826: 
        !          1827:        * ic/m68k/m68k-impl.h (TME_M68K_TLB_ENTRY_SET):
        !          1828:        (TME_M68K_TLB_ENTRY): Removed. 
        !          1829:        (TME_M68K_DTLB_ENTRY): Added. 
        !          1830:        In struct tme_m68k, replaced the old TLB set pointers with an array of
        !          1831:        struct tme_m68k_tlb, and added the internal bus context register. 
        !          1832: 
        !          1833:        * ic/m68k/m68k-insns-auto.sh: In the memory access functions, now use
        !          1834:        TME_M68K_DTLB_ENTRY() instead of TME_M68K_TLB_ENTRY(), and get the
        !          1835:        ITLB entry directly.  Since the TME_M68K_TLB_OK_FAST_* macros were
        !          1836:        removed, manually check everything about a TLB entry, including the
        !          1837:        new TLB context value.  In the slow memory access functions, replaced
        !          1838:        tme_bus_tlb_is_valid() and tme_m68k_tlb_is_valid() uses with
        !          1839:        tme_m68k_tlb_is_valid() and tme_m68k_tlb_is_invalid().  Check the new
        !          1840:        TLB context value.  Added some (tme_bus_addr32_t) casts as needed, to
        !          1841:        avoid doing wider math when tme_bus_addr_t is wider. 
        !          1842: 
        !          1843:        * ic/m68k/m68k-misc.c (_tme_m68k_connection_score):
        !          1844:        (_tme_m68k_connections_new): The tme_bus_tlb_set_allocate member has
        !          1845:        been replaced by tme_bus_tlb_set_add. 
        !          1846:        (_tme_m68k_connection_make): Initialize the new TLB array and add it
        !          1847:        on the bus. 
        !          1848:        (tme_m68k_go_slow): Since TME_M68K_TLB_OK_FAST_READ was removed,
        !          1849:        manually check everything about the instruction TLB entry, including
        !          1850:        the new TLB context value.  Added some (tme_bus_addr32_t) casts as
        !          1851:        needed, to avoid doing wider math when tme_bus_addr_t is wider. 
        !          1852:        (tme_m68k_tlb_fill): Replaced a tme_bus_tlb_unbusy_fill() with a
        !          1853:        tme_m68k_tlb_unbusy()/tme_token_invalid_clear() pair.  Set the context
        !          1854:        on the TLB entry after it's returned.  Added some tme_bus_addr32_t
        !          1855:        casts. 
        !          1856:        (tme_m68k_callout_relock): Now get the instruction TLB entry directly. 
        !          1857:        Use tme_m68k_tlb_is_invalid() instead of tme_bus_tlb_is_invalid() and
        !          1858:        check that the TLB context is the right one. 
        !          1859:        (tme_m68k_rmw_start): Now use TME_M68K_DTLB_ENTRY() instead of
        !          1860:        TME_M68K_TLB_ENTRY(), and tme_m68k_tlb_busy() and
        !          1861:        tme_m68k_tlb_unbusy() instead of the plain bus versions.  Added some
        !          1862:        tme_bus_addr32_t casts, and check a TLB's bus context as needed. 
        !          1863: 
        !          1864:        * libtme/recode-insns.c (tme_recode_insns_thunk): Now generate
        !          1865:        read-uses records, which track read-uses counts for guest registers
        !          1866:        across different live regions in the instructions thunk (instead of
        !          1867:        just the entire thunk).  One live region for a guest register ends,
        !          1868:        and another begins, when a guest register is written or when all guest
        !          1869:        registers are flushed out.  Initial read-uses records are produced at
        !          1870:        a flush point, and write read-uses records are produced at a write. 
        !          1871:        The register allocator uses these records to update its read-uses
        !          1872:        counts when a live region changes. 
        !          1873:        Read/write instructions also need all flags flushed, since they may
        !          1874:        fault and never return. 
        !          1875: 
        !          1876:        * libtme/recode-regs.c (tme_recode_regs_host_free_many): When all host
        !          1877:        registers are freed, consume initial read-uses records to set the
        !          1878:        read-uses counts for all guest registers that have live regions
        !          1879:        beginning now. 
        !          1880:        (tme_recode_regs_dst_any): A write begins a new live region for the
        !          1881:        destination guest register, so consume a write read-use record to set
        !          1882:        the read-uses count for it. 
        !          1883:        (tme_recode_regs_dst_specific): When the specific host register
        !          1884:        already has a guest register, after writing it if it's dirty, don't
        !          1885:        move it into another host register if the guest register won't be read
        !          1886:        later. 
        !          1887:        A write begins a new live region for the destination guest register,
        !          1888:        so consume a write read-use record to set the read-uses count for it. 
        !          1889: 
        !          1890:        * libtme/host/x86/rc-x86-insns.c (_tme_recode_x86_insn_guest): Fixed a
        !          1891:        bug when making a dummy high half of a double-host-size ia32 guest
        !          1892:        function argument, where we would add to %esp instead of subtracting
        !          1893:        from it. 
        !          1894:        (_tme_recode_x86_insn_rw): Added. 
        !          1895:        (_tme_recode_x86_insn_emit): When the first source operand is not
        !          1896:        zero, don't assume that it's a guest register when checking the
        !          1897:        opcode-makes-zero optimization.  For binary operations on an x86-64
        !          1898:        host, we can only emit an immediate whose one or two host-sized parts
        !          1899:        can be sign-extended from 32-bit parts.  On an ia32 host, we can
        !          1900:        always emit any immediate, even for a double-host-sized guest. 
        !          1901:        Added an optimization, where any current register window index is
        !          1902:        saved at an if branch, switched with any current register window index
        !          1903:        at an else branch, and compared to the current register window index
        !          1904:        at the endif.  Only if they are different is the current register
        !          1905:        window index invalidated.  This can often save a register window
        !          1906:        offset reload after an if/endif.  Now call _tme_recode_x86_insn_rw()
        !          1907:        for a read/write instruction. 
        !          1908: 
        !          1909:        * libtme/host/x86/rc-x86-regs.c (tme_recode_host_reg_move): When
        !          1910:        emitting a REX prefix for a register store, size may be
        !          1911:        double-host-size, so be sure to use the minimum of that and the host
        !          1912:        size. 
        !          1913: 
        !          1914:        * libtme/host/x86/recode-x86.c: Now define register macros for the XMM
        !          1915:        registers, and a generic undefined register number. 
        !          1916:        Define opcodes for ROR, MOV_Ib_Eb, REP, Group 15 instructions, and XMM
        !          1917:        move instructions. 
        !          1918:        (_tme_recode_x86_raw_reg_copy): Removed. 
        !          1919:        (_tme_recode_x86_raw_reg_binop): Added, from the old
        !          1920:        _tme_recode_x86_raw_reg_copy(). 
        !          1921:        (_tme_recode_x86_emit_reg_binop): Added, from the old
        !          1922:        _tme_recode_x86_emit_reg_copy(). 
        !          1923:        (_tme_recode_x86_emit_reg_copy): Now use
        !          1924:        _tme_recode_x86_emit_reg_binop(). 
        !          1925:        (_tme_recode_x86_emit_mul_constant): Added.  Now include
        !          1926:        host/x86/rc-x86-rws.c. 
        !          1927: 
        !          1928:        * machine/Makefile.am: Added sun4u to DIST_SUBDIRS. 
        !          1929: 
        !          1930:        * machine/sun/Makefile.am: Added sun-cgsix.c to
        !          1931:        libtme_machine_sun_la_SOURCES. 
        !          1932: 
        !          1933:        * machine/sun/sun-cgsix.c: Added. 
        !          1934: 
        !          1935:        * tme/generic/bus-device.h: Moved TME_BUS_ROUTER_INIT_INDEX here. 
        !          1936:        Added a prototype for tme_bus_device_tlb_set_add(). 
        !          1937: 
        !          1938:        * tme/generic/bus.h: Now define TME_BUS64_LOG2, TME_BUS128_LOG2,
        !          1939:        TME_BUS_SIGNAL_BR, and TME_BUS_SIGNAL_BG. 
        !          1940:        (tme_bus_tlb_is_valid):
        !          1941:        (tme_bus_tlb_is_invalid):
        !          1942:        (tme_bus_tlb_busy):
        !          1943:        (tme_bus_tlb_unbusy):
        !          1944:        (tme_bus_tlb_unbusy_fill): Now use the corresponding token macros with
        !          1945:        the TLB entry's token. 
        !          1946:        (_tme_bus_tlb_busy_change):
        !          1947:        (_TME_BUS_TLB_OK):
        !          1948:        (TME_BUS_TLB_OK_FAST_READ):
        !          1949:        (TME_BUS_TLB_OK_FAST_WRITE):
        !          1950:        (TME_BUS_TLB_OK_SLOW_READ):
        !          1951:        (TME_BUS_TLB_OK_SLOW_WRITE): Removed.  Now define bus-size-specific
        !          1952:        bus address types, and define tme_bus_addr_t to be the largest needed
        !          1953:        bus address type.  Now define tme_bus_context_t, struct
        !          1954:        tme_bus_cacheable, and struct tme_bus_tlb_set_info.  In struct
        !          1955:        tme_bus_tlb, replaced the members for the old busy and invalid
        !          1956:        mechanism with a pointer to the TLB entry's token.  Added a pointer
        !          1957:        for a TLB entry's cacheable information.  Now that a TLB set (with its
        !          1958:        bus context register pointer) is added to a bus connection instead of
        !          1959:        allocated by it, replaced the old allocate function pointer with an
        !          1960:        add function pointer in struct tme_bus_connection, and replaced the
        !          1961:        tme_bus_tlb_set_allocate() prototype with one for
        !          1962:        tme_bus_tlb_set_add().  Removed the prototypes for the old TLB entry
        !          1963:        saving, invalidating, and initializing functions. 
        !          1964: 
        !          1965:        * tme/ic/m68k.h (TME_M68K_TLB_OK_FAST_READ):
        !          1966:        (TME_M68K_TLB_OK_FAST_WRITE):
        !          1967:        (TME_M68K_TLB_OK_SLOW_READ):
        !          1968:        (TME_M68K_TLB_OK_SLOW_WRITE): Removed. 
        !          1969:        (tme_m68k_tlb_busy):
        !          1970:        (tme_m68k_tlb_unbusy): Now use the corresponding token macro, on the
        !          1971:        token directly in the TLB entry. 
        !          1972:        (tme_m68k_tlb_is_valid):
        !          1973:        (tme_m68k_tlb_is_invalid): Added.  Added a token and a bus context to
        !          1974:        struct tme_m68k_tlb. 
        !          1975: 
        !          1976: Sat Aug 29 01:35:17 2009  Matt Fredette  <[email protected]>
        !          1977: 
        !          1978:        * libtme/misc.c (_tme_misc_number_parse): Changed the G, M, and K
        !          1979:        units from the powers of two to the powers of ten. 
        !          1980:        (tme_misc_cycles_scaled):
        !          1981:        (tme_misc_cycles_scaling):
        !          1982:        [!TME_HAVE_MISC_CYCLES_PER_MS] (tme_misc_cycles_per_ms):
        !          1983:        [!TME_HAVE_MISC_CYCLES] tme_misc_cycles(): Added. 
        !          1984: 
        !          1985:        * libtme/host/x86/Makefile.am: Added misc-x86.c to EXTRA_DIST. 
        !          1986: 
        !          1987:        * libtme/host/x86/rc-x86-flags.c (_tme_recode_x86_flags_shift_add_add):
        !          1988:        In addition to when the shift count is more than three, also do all
        !          1989:        shifting when an shl instruction when there is no constant and no
        !          1990:        addend register. 
        !          1991: 
        !          1992: Fri Aug 28 01:50:09 2009  Matt Fredette  <[email protected]>
        !          1993: 
        !          1994:        * generic/bus-device.c (tme_bus_device_tlb_set_add): Added. 
        !          1995:        * host/gtk/gtk-display.h: Added tme_gtk_screen_full_redraw to struct
        !          1996:        tme_gtk_screen. 
        !          1997: 
        !          1998:        * ic/ieee754/ieee754-ops-auto.sh: Now emit an op for to_int64. 
        !          1999: 
        !          2000:        * ic/sparc/sparc-rc-cc.c (_tme_sparc_recode_cc_init): Fixed bugs where
        !          2001:        we weren't shifting the raw CCR and RCC register numbers to agree with
        !          2002:        their eight-bit size.  Fixed a bug where we weren't making the
        !          2003:        conditions thunk for the internal RCC register. 
        !          2004: 
        !          2005:        * libtme/recode-impl.h: Added prototypes for
        !          2006:        tme_recode_host_rw_thunk_new() and tme_recode_host_rw_thunk_dup(). 
        !          2007: 
        !          2008: Thu Aug 20 22:45:50 2009  Matt Fredette  <[email protected]>
        !          2009: 
        !          2010:        * ic/sparc/sparc-rc-verify.c: Moved TME_SPARC_RECODE_VERIFY_IC_SIZE
        !          2011:        before the TLBs.  Added TME_STP103X_BLOCK_FPREGS_DOUBLE and struct
        !          2012:        tme_sparc_recode_verify_mem_block, for verifying block loads and
        !          2013:        stores. 
        !          2014:        In struct tme_sparc_recode_verify_mem, now track the PC for an access,
        !          2015:        and any block load and store information.  Changed all sparc state
        !          2016:        globals to be the new struct tme_sparc_recode type, which includes
        !          2017:        space for an IC-specific extension. 
        !          2018:        (_tme_sparc_recode_verify_mem_block):
        !          2019:        (tme_sparc_recode_verify_mem_block): Added. 
        !          2020:        (tme_sparc_recode_verify_mem): Now verify the PC of an access, and any
        !          2021:        block load and store. 
        !          2022:        (tme_sparc_recode_verify_reg_tick):
        !          2023:        (tme_sparc_recode_verify_reg_tick_now): Added. 
        !          2024:        (tme_sparc_recode_verify_begin): Now copy any IC-specific extension
        !          2025:        into the input and replay states.  Now make the ITLB entry that the
        !          2026:        replay will use, from the last ITLB entry used in the input state, and
        !          2027:        also make one for tme_sparc_recode_insns_dump(). 
        !          2028:        (tme_sparc_recode_verify_end): Now throw away any memory records for a
        !          2029:        trapping PC.  Clear the log level while replaying.  Make the ITLB
        !          2030:        entry that replay used unusable again.  Added more registers and
        !          2031:        controls to ignore.  Now verify any IC-specific extension.  Added
        !          2032:        support for sparc64 register windows.  Make sure we verified all of
        !          2033:        the memory records. 
        !          2034:        (tme_sparc_recode_verify_init): Check the verify and total sizes for
        !          2035:        this IC.  Initialize all of the replay state TLB entries to be
        !          2036:        unusable. 
        !          2037: 
        !          2038: Thu Jun 18 01:16:53 2009  Matt Fredette  <[email protected]>
        !          2039: 
        !          2040:        * ic/ad184x.c ic/stp2024.c ic/sparc/sparc-kgdb.c
        !          2041:          ic/sparc/sparc-vis-auto.sh ic/sparc/sparc-vis.c:
        !          2042: 
        !          2043:          Added. 
        !          2044: 
        !          2045:        * ic/sparc/sparc-rc-verify.c: Moved _tme_sparc_recode_verify_on to
        !          2046:        sparc-recode.c. 
        !          2047:        (tme_sparc_recode_verify_mem): Fixed a bug where this was always
        !          2048:        passed an ASI mask, but we thought it got an ASI. 
        !          2049:        (_tme_sparc_recode_verify_change): Added. 
        !          2050:        (tme_sparc_recode_verify_begin): Now call
        !          2051:        _tme_sparc_recode_verify_change() to turn verifying on or off.  Now
        !          2052:        set the recode IC in the replay state. 
        !          2053:        (tme_sparc_recode_verify_end): No longer override changes to the old
        !          2054:        TLB array pointers.  Turned the override of the memory buffer into a
        !          2055:        struct assignment.  No longer use TME_SPARC_CWP_OFFSET(). 
        !          2056:        (tme_sparc_recode_insns_dump): Now use TME_SPARC_TLB_HASH() and
        !          2057:        TME_SPARC_ITLB_ENTRY() to get the instruction TLB entry. 
        !          2058: 
        !          2059:        * ic/sparc/stp103x.c: Removed the TME_STP103X_TTE_TAG_ macros, since
        !          2060:        they weren't being used. 
        !          2061:        Now define TME_STP103X_ASI_DCACHE_DATA, TME_STP103X_ASI_DCACHE_TAG,
        !          2062:        and TME_STP103X_ASI_BLK_COMMIT.  Now define TME_STP103X_BLOCK_SIZE and
        !          2063:        TME_STP103X_BLOCK_FPREGS_DOUBLE.  Moved the GSR value from struct
        !          2064:        tme_stp103x to struct tme_sparc.  All users changed. 
        !          2065:        Added a missing static to _TME_SPARC_EXECUTE_OPMAP.  Added
        !          2066:        tme_sparc64_vis_ls_asi_pst and tme_sparc64_vis_ls_asi_fl to
        !          2067:        _tme_stp103x_ls_asi_handlers[]. 
        !          2068:        (_tme_stp103x_update_pstate): Fixed bugs where we weren't clearing all
        !          2069:        of the global-register-selection bits in the PSTATE value before using
        !          2070:        + to set new bits.  Now check that the selection isn't reserved. 
        !          2071:        (_tme_stp103x_impdep1): Added support for the VIS instructions. 
        !          2072:        (_tme_stp103x_tlb_invalidate): Added. 
        !          2073:        (_tme_stp103x_ls_cycle_quad): Fixed a bug where weren't checking the a
        !          2074:        fast transfer TLB for a quad's worth.  Now use the
        !          2075:        TME_SPARC_LSINFO_ENDIAN_LITTLE indication from tme_sparc64_load(),
        !          2076:        instead of figuring it out ourselves. 
        !          2077:        (_tme_stp103x_ls_asi_quad): Fixed a bug where we were checking for an
        !          2078:        stda instruction instead of an ldda instruction. 
        !          2079:        (_tme_stp103x_ls_asi_tsb_ptr): Fixed a bug where we weren't shifting
        !          2080:        the tag access register image into a TSB entry offset. 
        !          2081:        (_tme_stp103x_ls_asi_tlb_data_in): Fixed a bug where we weren't
        !          2082:        invalidating a TLB entry before replacing it. 
        !          2083:        (_tme_stp103x_ls_asi_mmu_demap): Now use _tme_stp103x_tlb_invalidate()
        !          2084:        to invalidate TLB entries. 
        !          2085:        (_tme_stp103x_ls_asi_dcache): Separate the code that handles writing
        !          2086:        zero to a tag and the code that handles the special PROM writes. 
        !          2087:        Added support for reading tags, always as zero. 
        !          2088:        (_tme_stp103x_block_buffer_bswap):
        !          2089:        (_tme_stp103x_ls_cycle_block_ld):
        !          2090:        (_tme_stp103x_ls_cycle_block_st):
        !          2091:        (_tme_stp103x_ls_asi_block): Added. 
        !          2092:        (_tme_stp103x_new): Now initialize tme_sparc_vis_ls_fault_illegal. 
        !          2093:        Added support for ASI_NUCLEUS_QUAD_LDD_LITTLE and the VIS partial
        !          2094:        store and short load ASIs. 
        !          2095: 
        !          2096:        * ic/stp22xx/Makefile.am: Added stp222x-impl.h to EXTRA_DIST. 
        !          2097: 
        !          2098:        * ic/stp22xx/stp220x.c: Added a missing static to
        !          2099:        _tme_stp2210_mc124x9_subregion. 
        !          2100:        (_tme_stp220x_tlb_fill_transition): Fixed a bug where we would return
        !          2101:        a TLB entry that could handle read and write cycles, even if the
        !          2102:        old-style TLB entry didn't support what the caller wasn't filling for. 
        !          2103: 
        !          2104:        * ic/stp22xx/stp222x-impl.h: Now track the active IDIs in struct
        !          2105:        tme_stp222x.  Added a prototype for tme_stp222x_mdu_intcon(). 
        !          2106: 
        !          2107:        * ic/stp22xx/stp222x-main.c: Changed the obio offset for the audio IDI
        !          2108:        to zero, to match the new stp2024 emulation. 
        !          2109:        (_tme_stp222x_signal): Now call tme_stp222x_mdu_intcon() to handle an
        !          2110:        interrupt signal. 
        !          2111:        (_tme_stp222x_tlb_fill_transition): Fixed a bug where we would return
        !          2112:        a TLB entry that could handle read and write cycles, even if the
        !          2113:        old-style TLB entry didn't support what the caller wasn't filling for. 
        !          2114: 
        !          2115:        * ic/stp22xx/stp222x-mdu.c: Added the TME_STP222X_MDU_IDI_TEST macro. 
        !          2116:        (tme_stp222x_mdu_intcon): Added. 
        !          2117:        (tme_stp222x_mdu_regs_clear): If the IDI is being updated to received,
        !          2118:        or if the IDI is still active in the interrupt contentrator, mark the
        !          2119:        IDI is received. 
        !          2120: 
        !          2121:        * ic/stp22xx/stp22xx.c (tme_stp22xx_enter_master)
        !          2122:        [TME_STP22XX_BUS_TRANSITION]: Before we enter, if we were making a bus
        !          2123:        master cycle callout, find the completion and force it to be valid,
        !          2124:        since the transition code may not get a chance to do that before we
        !          2125:        are reentered by another master. 
        !          2126:        (tme_stp22xx_slave_cycle) [TME_STP22XX_BUS_TRANSITION]: Before we make
        !          2127:        a bus master cycle callout, assume that the callout will complete
        !          2128:        without error.  When the callout returns, validate the completion only
        !          2129:        if tme_stp22xx_enter_master() didn't do it. 
        !          2130: 
        !          2131: Tue Jun 16 00:31:33 2009  Matt Fredette  <[email protected]>
        !          2132: 
        !          2133:        * ic/Makefile.am: Added stp22xx, ncr89c105, stp2024, and ad184x. 
        !          2134: 
        !          2135: Tue May 05 22:12:56 2009  Matt Fredette  <[email protected]>
        !          2136: 
        !          2137:        * ic/stp22xx/stp222x-iommu.c:
        !          2138:        * ic/stp22xx/stp222x-stc.c: Added. 
        !          2139: 
        !          2140: Sat Feb 28 16:48:11 2009  Matt Fredette  <[email protected]>
        !          2141: 
        !          2142:        * ic/ncr89c105.c ic/sparc/stp103x.c ic/stp22xx/Makefile.am
        !          2143:          ic/stp22xx/stp220x.c ic/stp22xx/stp222x-asearch.c
        !          2144:          ic/stp22xx/stp222x-aspace.c ic/stp22xx/stp222x-impl.h
        !          2145:          ic/stp22xx/stp222x-main.c ic/stp22xx/stp222x-mdu.c
        !          2146:          ic/stp22xx/stp222x-timer.c ic/stp22xx/stp22xx-impl.h
        !          2147:          ic/stp22xx/stp22xx.c libtme/host/x86/misc-x86.c tme/completion.h
        !          2148:          tme/bus/Makefile.am tme/bus/upa.h:
        !          2149: 
        !          2150:          Added. 
        !          2151: 
        !          2152: Fri Oct 03 00:48:18 2008  Matt Fredette  <[email protected]>
        !          2153: 
        !          2154:        * ic/sparc/sparc-insns-auto.sh: In the load and store functions, added
        !          2155:        support for verifying and replaying transfers for recode.  In the slow
        !          2156:        load and store functions, a TLB entry now has a token pointer that is
        !          2157:        always defined, and we no longer have the tme_bus_tlb_global to point
        !          2158:        a TLB entry back to itself.  When recode is supported, call a function
        !          2159:        to update the corresponding recode TLB entry. 
        !          2160: 
        !          2161: Wed Sep 24 23:04:32 2008  Matt Fredette  <[email protected]>
        !          2162: 
        !          2163:        * Makefile.am (dist-hook): Now remove any
        !          2164:        ${distdir}/libtme/recode-host.c. 
        !          2165: 
        !          2166:        * ic/sparc/sparc-rc-ls.c libtme/recode-rws.c libtme/token.c
        !          2167:          libtme/host/Makefile.am libtme/host/x86/Makefile.am
        !          2168:          libtme/host/x86/rc-x86-rws.c tme/token.h tme/host/Makefile.am:
        !          2169: 
        !          2170:          Added. 
        !          2171: 
        !          2172:        * libtme/host/x86/Makefile: Removed. 
        !          2173: 
        !          2174:        * tme/memory.h: Added tme_shared to the definition of
        !          2175:        tme_memory_atomic_flag_t, and removed the requirement that a lock be
        !          2176:        gived in calls to tme_memory_atomic_read_flag() and
        !          2177:        tme_memory_atomic_write_flag().  Added tme_memory_atomic_init_flag(). 
        !          2178: 
        !          2179:        * tme/generic/fb.h: Added members for the first and last bytes updated
        !          2180:        in the real framebuffer memory. 
        !          2181: 
        !          2182: Wed Jul 02 00:01:39 2008  Matt Fredette  <[email protected]>
        !          2183: 
        !          2184:        * libtme/host/x86/rc-x86-insns.c (_tme_recode_x86_insn_jump): A
        !          2185:        TME_RECODE_OPCODE_JUMP instruction now always jumps somewhere.  Any
        !          2186:        alternate jump is taken if the jump recode flag is set.  A jump jumps
        !          2187:        to the instructions thunk epilogue if it can't be chained, otherwise
        !          2188:        it jumps to the jump-chain sub. 
        !          2189:        (_tme_recode_x86_insn_size_max_check): Added. 
        !          2190:        (tme_recode_host_insns_thunk_new): Now call
        !          2191:        tme_recode_insns_thunk_invalidate_all() when there is no space for
        !          2192:        another instructions thunk. 
        !          2193: 
        !          2194:        * libtme/host/x86/rc-x86-regs.c (tme_recode_host_reg_move): Fixed a
        !          2195:        bug found by -Wuninitialized where we wouldn't initialize
        !          2196:        reg_x86_other for loads. 
        !          2197: 
        !          2198:        * libtme/host/x86/recode-x86.c (tme_recode_host_ic_new): The new
        !          2199:        TME_RECODE_X86_OFFSET_JUMP_CHAIN_DIRECT offset in the jump chain subs
        !          2200:        is used when the address of the jump to chain is already in the c
        !          2201:        register, and the zero offset in the subs is used when the address of
        !          2202:        the jump to chain is at the c register plus six
        !          2203:        (the size of the 32-bit conditional alternate jump).  After the
        !          2204:        indirect jump at the end of the jump chain subs, emit an undefined
        !          2205:        instruction, to avoid unnecessary speculation by the CPU.  No longer
        !          2206:        set the first variable thunk offset; machine-independent code does
        !          2207:        that. 
        !          2208:        Call _tme_recode_x86_insn_size_max_check(). 
        !          2209: 
        !          2210:        * tme/recode.h: Now define the TME_RECODE_JUMP_ options.  Now define
        !          2211:        TME_RECODE_INSNS_THUNK_INSNS_MAX.  Added the
        !          2212:        tme_recode_ic_thunk_off_variable member.  Added a prototype for
        !          2213:        tme_recode_insns_thunk_invalidate_all(). 
        !          2214: 
        !          2215:        * tme/host/recode-mmap.h: Now define TME_RECODE_HOST_THUNK_SIZE_MAX. 
        !          2216: 
        !          2217:        * tme/host/recode-x86.h: Replaced TME_RECODE_HOST_THUNK_INSNS_MAX with
        !          2218:        TME_RECODE_HOST_INSN_SIZE_MAX and moved TME_RECODE_HOST_THUNK_SIZE_MAX
        !          2219:        to the host recode header that is providing the instructions thunk
        !          2220:        memory.  Replaced the tme_recode_x86_ic_thunk_off_variable member with
        !          2221:        a machine-independent member. 
        !          2222: 
        !          2223: Tue Jul 01 02:02:57 2008  Matt Fredette  <[email protected]>
        !          2224: 
        !          2225:        * ic/sparc/sparc-rc-insns.c: Removed
        !          2226:        TME_SPARC_RECODE_INSN_NO_UPDATE_PC_NEXT, since instructions that need
        !          2227:        to update PC_next, now update both PC and PC_next themselves, instead
        !          2228:        of relying on TME_SPARC_RECODE_INSN_UPDATE_PCS.  Updated the recode
        !          2229:        state flags for jumps.  In various places, now track some statistics. 
        !          2230:        (_tme_sparc_recode_insn_assist_redispatch): Added. 
        !          2231:        (_tme_sparc_recode_insn_assist_store):
        !          2232:        (_tme_sparc_recode_insn_assist_full): Before returning, call
        !          2233:        _tme_sparc_recode_insn_assist_redispatch(), which will redispatch and
        !          2234:        not return if the recode page for the instructions thunk is no longer
        !          2235:        valid. 
        !          2236:        [_TME_SPARC_STATS] (_tme_sparc_recode_insns_total): Added. 
        !          2237:        (_tme_sparc_recode_recode): Don't update PC and PC_next automatically
        !          2238:        at the beginning of each instructions thunk, just to make PC valid
        !          2239:        from PC_next.  Instead, track where the valid PC is, and update them
        !          2240:        only for full assists and control transfer instructions.  Now
        !          2241:        calculate the worst-case position in the recode instructions buffer,
        !          2242:        past which we may not be able to recode another instruction.  In a few
        !          2243:        places where we have to immediately stop recoding, we may have recoded
        !          2244:        no instructions at all for the thunk.  In this case, return zero
        !          2245:        instead of calling abort().  It was too hard to get
        !          2246:        TME_SPARC_RECODE_INSN_NO_UPDATE_PC_NEXT to work all of the time, so
        !          2247:        now everywhere we need to update PC_next, update both PC and PC_next. 
        !          2248:        Now set the new recode flags for jumps, for the control transfer
        !          2249:        instructions. 
        !          2250:        Fixed a bug where we would emit a sethi instruction even if it is
        !          2251:        annulled in the delay slot of an unconditional branch.  At the end of
        !          2252:        the instructions thunk, emit a TME_RECODE_OPCODE_JUMP instruction. 
        !          2253: 
        !          2254:        * ic/sparc/sparc-rc-verify.c (tme_sparc_recode_verify_failed): No
        !          2255:        longer abort(), so we can continue if needed. 
        !          2256:        (tme_sparc_recode_verify_begin): Added support for turning
        !          2257:        verification on and off. 
        !          2258:        (tme_sparc_recode_verify_end): Added more fields to ignore in the bulk
        !          2259:        comparison. 
        !          2260:        (tme_sparc_recode_insns_dump): Added. 
        !          2261: 
        !          2262:        * ic/sparc/sparc-recode.c: Moved the #include of the verify code after
        !          2263:        tme_sparc_recode_invalidate_all().  Renamed the
        !          2264:        tme_sparc_recode_src_key_offset_chain member to
        !          2265:        tme_sparc_recode_chain_src_key_offset. 
        !          2266:        (tme_sparc_recode_invalidate_all): Added. 
        !          2267:        (_tme_sparc_recode_jump_chain) [_TME_SPARC_RECODE_VERIFY]: Stop
        !          2268:        chaining only if the verifier is on. 
        !          2269:        (tme_sparc_recode): Now save the cacheable recode page.  While an
        !          2270:        instructions thunk is running, it may need to confirm that its page is
        !          2271:        still valid. 
        !          2272:        (tme_sparc_recode_dump_insns): Updated the dump of
        !          2273:        TME_RECODE_OPCODE_JUMP instructions. 
        !          2274: 
        !          2275:        * libtme/recode-conds.c (tme_recode_conds_thunk): Make sure the first
        !          2276:        variable thunk goes after this conditions thunk. 
        !          2277: 
        !          2278:        * libtme/recode-flags.c (tme_recode_flags_thunk): Make sure the first
        !          2279:        variable thunk goes after any instructions added for a flags thunk. 
        !          2280: 
        !          2281:        * libtme/recode-ic.c (tme_recode_ic_new): Make sure the first variable
        !          2282:        thunk goes after any thunks made by tme_recode_host_ic_new(). 
        !          2283: 
        !          2284:        * libtme/recode-impl.h: Renamed tme_recode_host_thunk_flush_all() to
        !          2285:        tme_recode_host_thunk_invalidate_all(). 
        !          2286: 
        !          2287:        * libtme/recode-insns.c (tme_recode_insns_thunk): Fixed a comment. 
        !          2288:        (tme_recode_insns_thunk_invalidate_all): Added. 
        !          2289: 
        !          2290:        * libtme/host/recode-mmap.c (tme_recode_host_thunk_flush_all): Renamed
        !          2291:        to tme_recode_host_thunk_invalidate_all(). 
        !          2292: 
        !          2293:        * libtme/host/x86/rc-x86-conds.c (tme_recode_host_conds_thunk_new): No
        !          2294:        longer update the removed tme_recode_x86_ic_thunk_off_variable member. 
        !          2295: 
        !          2296:        * libtme/host/x86/rc-x86-flags.c (tme_recode_host_flags_thunk_new):
        !          2297:        (_tme_recode_x86_flags_thunk_chain): No longer update the removed
        !          2298:        tme_recode_x86_ic_thunk_off_variable member. 
        !          2299: 
        !          2300: Mon Jun 30 22:42:10 2008  Matt Fredette  <[email protected]>
        !          2301: 
        !          2302:        * host/gtk/gtk-screen.c (_tme_gtk_screen_new): Fixed the
        !          2303:        gtk_window_set_policy() arguments, so the top-level window always
        !          2304:        grows and shrinks automatically. 
        !          2305: 
        !          2306: Sun Jun 01 23:25:11 2008  Matt Fredette  <[email protected]>
        !          2307: 
        !          2308:        * ic/sparc/sparc-rc-cc.c ic/sparc/sparc-rc-insns.c
        !          2309:          ic/sparc/sparc-rc-verify.c ic/sparc/sparc-recode.c
        !          2310:          libtme/recode-conds.c libtme/recode-flags.c libtme/recode-ic.c
        !          2311:          libtme/recode-impl.h libtme/recode-insns.c libtme/recode-regs.c
        !          2312:          libtme/host/recode-mmap.c libtme/host/x86/Makefile
        !          2313:          libtme/host/x86/rc-x86-conds.c libtme/host/x86/rc-x86-flags.c
        !          2314:          libtme/host/x86/rc-x86-insns.c libtme/host/x86/rc-x86-regs.c
        !          2315:          libtme/host/x86/rc-x86-subs-asm.S libtme/host/x86/recode-x86.c
        !          2316:          tme/recode.h tme/host/recode-mmap.h tme/host/recode-x86.h:
        !          2317: 
        !          2318:          Added. 
        !          2319: 
1.1.1.4   root     2320: Thu Sep 06 23:35:41 2007  Matthew Fredette  <[email protected]>
                   2321: 
                   2322:        * Release 0.6 out.
                   2323: 
                   2324:        * TODO: Updated. 
                   2325: 
                   2326:        * ic/ncr53c9x.c: Fixed some comments. 
                   2327:        (_tme_ncr53c9x_scsi_cycle): When we transfer in from the SCSI bus, if
                   2328:        we need to detect the the transfer residual based on the data
                   2329:        transferred, try to update the transfer residual. 
                   2330: 
                   2331:        * machine/sun4/sun44c-mmu.c (_tme_sun44c_buserr_common): A bus error
                   2332:        that is asynchronous for the CPU isn't reported as a hard fault to the
                   2333:        CPU, but if the initiator is another bus master, it is reported to
                   2334:        that master as a hard fault. 
                   2335: 
                   2336:        * scsi/scsi-tape.c (tme_scsi_tape_cdb_xfer0): In the NetBSD PR
                   2337:        pkg/34536 hack, only clear the Illegal Length Indicator (ILI) flag. 
                   2338:        More importantly, this preserves the filemark flag, which is needed
                   2339:        for SunOS tape installs to work. 
                   2340: 
                   2341: Sun Aug 26 14:02:04 2007  Matthew Fredette  <[email protected]>
                   2342: 
                   2343:        * configure.in: Bumped version to 0.6. 
                   2344:        Now check for the alignment of long, when it's 64 bits.  Added support
                   2345:        for sun4 systems. 
                   2346: 
                   2347:        * ic/ieee754/ieee754-precision.sh: Added some missing ${prefix}es to
                   2348:        the variable names in the precision-independent statements. 
                   2349: 
                   2350: Sat Aug 25 23:12:31 2007  Matthew Fredette  <[email protected]>
                   2351: 
                   2352:        * generic/fb.c (_tme_fb_xlat_colors_get_set): If the colors that the
                   2353:        destination framebuffer needs to allocate don't depend on the source
                   2354:        framebuffer, return a colorset signature that destination framebuffers
                   2355:        can use to avoid reallocating the same set of colors repeatedly.  When
                   2356:        the number of colors to allocate is clearly more than the destination
                   2357:        could ever allocate, and source pixels are mapped to intensities,
                   2358:        remove some of the less significant bits of the source intensities to
                   2359:        reduce the number of colors needed.  Now give a distinct pixel value
                   2360:        for each distinct color we ask for, especially when we're asking for a
                   2361:        lot of duplicate colors as the result of reducing the range of the
                   2362:        source intensities (see above). 
                   2363: 
                   2364:        * host/gtk/gtk-display.c (_tme_gtk_display_menu_radio): Added. 
                   2365: 
                   2366:        * host/gtk/gtk-screen.c (_tme_gtk_screen_mode_change): Now only
                   2367:        reallocate the GdkImage when the framebuffer size changes, and the
                   2368:        colors when the final mapping from source color to destination pixel
                   2369:        changes.  When allocating colors, now only allocate distinct colors. 
                   2370:        (_tme_gtk_screen_submenu_scaling): Added. 
                   2371:        (_tme_gtk_screen_new): Now use _tme_gtk_display_menu_radio() to create
                   2372:        the scaling submenu. 
                   2373: 
                   2374:        * ic/i825x6.c: Added a union to fix an aliasing problem with
                   2375:        TME_I825X6_RX_BUFFER_NEXT().  From [email protected]. 
                   2376:        (_tme_i825x6_rx_buffers_add): Now busy a TLB before checking if it's
                   2377:        valid and useful, and unbusy it for filling if it's not.  After
                   2378:        filling it, loop to busy and check it again.  When we're done with the
                   2379:        TLB entry, unbusy it. 
                   2380:        (_tme_i825x6_callout_ca): When the receive unit is being started,
                   2381:        always abort it first, unless it was already idle.  Before, we
                   2382:        wouldn't abort it if it was out of resources, which was wrong since
                   2383:        it's possible to run out of receive frame descriptors but not receive
                   2384:        buffers. 
                   2385:        (_tme_i825x6_callout_cu): Don't abort() for a DIAGNOSE command.  From
                   2386:        [email protected] in NetBSD PR pkg/35305. 
                   2387:        (_tme_i825x6_signal): Don't assume that xor-ing the level out of the
                   2388:        signal value leaves only the base signal; use TME_BUS_SIGNAL_WHICH()
                   2389:        instead. 
                   2390:        (_tme_i825x6_read): Keep track of the transmit packet's size in a new
                   2391:        variable, since the DMA read and write helper macros destroy rc.  From
                   2392:        [email protected] in NetBSD PR pkg/35305. 
                   2393: 
                   2394:        * ic/z8530.c (_tme_z8530_channel_reset): On a hardware reset, clear
                   2395:        the IUS bits and reset RR2.  Now take a pointer to the structure for
                   2396:        the whole chip, since some registers are common to both channels.  All
                   2397:        callers changed. 
                   2398:        (_tme_z8530_channel_init): Now take a pointer to the structure for the
                   2399:        whole chip, since some registers are common to both channels.  All
                   2400:        callers changed. 
                   2401:        (_tme_z8530_rr0_update): Fixed a bug where we would use the RR15 value
                   2402:        where we meant to use the WR15 value. 
                   2403:        (_tme_z8530_rr2_update):
                   2404:        (_tme_z8530_int_pending): Added. 
                   2405:        (_tme_z8530_intack): Now use _tme_z8530_int_pending() to see if an
                   2406:        interrupt is pending, and call _tme_z8530_rr2_update() to update RR2
                   2407:        and get the vector to use.  Now check a socket flag to see if the IEI
                   2408:        pin is tied low. 
                   2409:        (_tme_z8530_callout): Now use _tme_z8530_int_pending() to see if an
                   2410:        interrupt is pending. 
                   2411:        (_tme_z8530_bus_cycle): When an interrupt is acknowledged, call
                   2412:        _tme_z8530_rr2_update() to update RR2. 
                   2413: 
                   2414:        * ic/m68k/m6888x-auto.sh: No longer use the IEEE754 sub function to
                   2415:        implement fcmp, use a specific m6888x function instead. 
                   2416: 
                   2417:        * ic/m68k/m6888x.c (tme_m68k_fpgen): Fixed a bug where a byte or word
                   2418:        source operand in a register would get sign-extended and stored back
                   2419:        into the register, destroying the other parts of the register. 
                   2420:        (_tme_m6888x_fcmp): Added. 
                   2421:        (tme_m68k_fmove_rm): We don't use TME_M68K_INSN_OP1(), so there's no
                   2422:        need to set _op1. 
                   2423:        (tme_m68k_fmovem): Fixed a serious bug where we wouldn't advance the
                   2424:        effective address after storing the last 32-bit word of a register's
                   2425:        value. 
                   2426:        (tme_m68k_fsave): Fixed a buffer overflow bug where we could write the
                   2427:        BIU flags outside of the frame structure. 
                   2428: 
                   2429:        * ic/m68k/m68k-insns-auto.sh: The cmpm, addx, and subx instructions
                   2430:        access the source operand before the destination operand, and we had
                   2431:        it backwards.  Now generate the wrapper functions for a move of an
                   2432:        address register to a predecrement or postincrement EA with that same
                   2433:        address register. 
                   2434:        (tme_m68k_movem_${name}${size}): Now calculate the total size of the
                   2435:        transfer early, so we can correctly emulate the behavior of storing
                   2436:        the same address register used in a predecrement EA on the different
                   2437:        CPUs. 
                   2438:        (tme_m68k_moves${size}): Now when storing the same address register
                   2439:        used in a predecrement EA, store the original value.  The BCD math
                   2440:        functions can only fault when they access memory, and they must
                   2441:        advance an address register right after it's used, in case the same
                   2442:        address register is used for the other operand. 
                   2443: 
                   2444:        * ic/m68k/m68k-insns.c (tme_m68k_tas): Removed the
                   2445:        TME_M68K_INSN_CANFAULT, since tme_m68k_rmw_start() does this if
                   2446:        needed. 
                   2447:        (tme_m68k_cmp2_chk2): Fixed several bugs.  From [email protected] in
                   2448:        NetBSD PR pkg/33969. 
                   2449: 
                   2450:        * ic/m68k/m68k-iset-expand.pl: As a special exception, expand a move
                   2451:        instruction that moves an address register into a predecrement or
                   2452:        postincrement EA with the same address register, to use a move wrapper
                   2453:        function. 
                   2454: 
                   2455:        * ic/m68k/m68k-iset.txt: Fixed a bug in decoding cas instructions -
                   2456:        their size field actually doesn't work like any other. 
                   2457: 
                   2458:        * ic/m68k/m68k-misc.c (tme_m68k_go_slow): Only make the first and last
                   2459:        valid fast pointers from the TLB entry if it supports fast reading. 
                   2460:        (tme_m68k_rmw_start): Fixed a bug where we would mark an instruction
                   2461:        as possibly faulting, even when we wouldn't make any normal bus cycle
                   2462:        calls. 
                   2463:        Corrected a byteswapping macro. 
                   2464:        (tme_m68k_rmw_finish): Corrected a byteswapping macro. 
                   2465: 
                   2466:        * ic/m68k/m68k-opmap-make.pl: Now recognize the
                   2467:        move-same-address-register-to-predecrement and -postincrement
                   2468:        functions wherever the move function is recognized. 
                   2469: 
                   2470:        * libtme/threads-sjlj.c: In struct tme_sjlj_thread, when GTK is in use
                   2471:        track the current timeout handle, and have space for some fixed
                   2472:        timeout handles.  We no longer track a single timeout tag, since
                   2473:        removing a timeout that hasn't fired yet may not prevent it from
                   2474:        firing.  Now, for each file descriptor, track a different thread for
                   2475:        each file descriptor condition. 
                   2476:        (tme_sjlj_threads_init): Initialize the file descriptor condition to
                   2477:        threads mapping. 
                   2478:        (tme_sjlj_dispatch_timeout) [HAVE_GTK]: Now remove no longer used
                   2479:        timeouts when they occur naturally, and free their timeout handles. 
                   2480:        (tme_sjlj_dispatch_fd): Now dispatch different threads depending on
                   2481:        the file descriptor conditions that are present. 
                   2482:        (tme_sjlj_threads_run): Now always do a select, even if there are no
                   2483:        threads blocking on file descriptors.  Now make a GdkInputCondition
                   2484:        value for each file descriptor that is ready, for
                   2485:        tme_sjlj_dispatch_fd(). 
                   2486:        (tme_sjlj_thread_create) [HAVE_GTK]: Now initialize the timeout
                   2487:        handles. 
                   2488:        (tme_sjlj_yield): Now correctly track a different thread for each file
                   2489:        descriptor condition, since there are often different threads managing
                   2490:        the same file descriptor.  When GTK is in use, timeouts can actually
                   2491:        expire up to 1ms early, so account for this, and no longer try to
                   2492:        remove an old timeout now, since it may still fire anyways.  Instead,
                   2493:        allocate and use another timeout handle, which will be managed by
                   2494:        tme_sjlj_dispatch_timeout(). 
                   2495: 
                   2496:        * machine/sun/sun-obie.c (_tme_sun_obie_bus_signal): Fixed a bug where
                   2497:        instead of managing the INTR bit in the CSR, we were just passing the
                   2498:        i82586's interrupt signal through to the mainbus.  This was breaking
                   2499:        SunOS.  Found by [email protected] in NetBSD PR pkg/35305.  Now also
                   2500:        pass a reset signal from obio up to the i82586. 
                   2501:        (_tme_sun_obie_connections_new): Now use _tme_sun_obie_bus_signal to
                   2502:        handle bus signals coming from obio. 
                   2503: 
                   2504:        * scsi/emulexmt02.c (_tme_emulexmt02_cdb_mode_sense): Now use
                   2505:        TME_EMULEXMT02_BLOCK_SIZE instead of the hard-coded constant. 
                   2506:        (_tme_emulexmt02_cdb_mode_select): Avoid a gcc warning about a
                   2507:        comparison whose result is always known due to the limited range of a
                   2508:        type. 
                   2509:        (tme_scsi_tape_emulexmt02_init): Now provide the fixed block size to
                   2510:        the machine-independent code. 
                   2511: 
                   2512:        * scsi/scsi-cdb.c (tme_scsi_device_mode_select_data): Added. 
                   2513:        (_tme_scsi_device_make_inquiry_string): Fixed a type to get better
                   2514:        type agreement.  From [email protected] in NetBSD PR pkg/34113. 
                   2515: 
                   2516:        * scsi/scsi-tape.c (tme_scsi_tape_cdb_xfer0): Don't pad out a block
                   2517:        with zeroes if the filemark indication is set. 
                   2518:        (_tme_scsi_tape_mode_select_data):
                   2519:        (tme_scsi_tape_cdb_mode_select): Avoid a gcc warning about a
                   2520:        comparison whose result is always known due to the limited range of a
                   2521:        type. 
                   2522: 
                   2523:        * tme/generic/fb.h: Now define TME_FB_COLORSET_NONE. 
                   2524: 
                   2525: Sat Aug 25 19:52:23 2007  Matthew Fredette  <[email protected]>
                   2526: 
                   2527:        * host/gtk/gtk-display.h: Now store a colorset signature in struct
                   2528:        tme_gtk_screen.  Define struct tme_gtk_display_menu_item, and added a
                   2529:        prototype for _tme_gtk_display_menu_radio(). 
                   2530: 
                   2531: Fri Aug 24 01:21:50 2007  Matthew Fredette  <[email protected]>
                   2532: 
                   2533:        * acinclude.m4 (AC_CHECK_ALIGNOF): Some compilers will do a smaller
                   2534:        read than you expect, if they know that the value read will only be
                   2535:        used at a smaller size later.  A little math on the value read
                   2536:        discourages this. 
                   2537:        (AC_CHECK_SHIFTMAX): Don't create the center value with one
                   2538:        expression, which would do the shifting in type int.  Defeat any
                   2539:        constant optimizations on the shift count by using sscanf to
                   2540:        initialize it. 
                   2541: 
                   2542:        * generic/float-auto.sh (tme_float_infinity_${_builtin_type}):
                   2543:        (tme_float_negative_zero_${_builtin_type}): Added. 
                   2544:        (tme_float_radix${radix}_mantissa_exponent_${_builtin_type}): If the
                   2545:        value is a zero, just return the same value.  Fixed a bug where we
                   2546:        would return a mantissa that was exactly the radix (instead of
                   2547:        reducing it again to 1). 
                   2548: 
                   2549:        * host/posix/posix-serial.c (_tme_posix_serial_th_ctrl): If a TIOCMGET
                   2550:        ioctl fails, be sure to use a zero modem state instead of garbage. 
                   2551: 
                   2552:        * ic/am7930.c (_tme_am7930_bus_cycle): Fixed a bug where we used
                   2553:        TME_BUS16_LOG2 but the device is only eight bits wide. 
                   2554: 
                   2555:        * ic/ieee754/ieee754-misc-auto.sh (tme_ieee754_${precision}_value_to_builtin):
                   2556:        Use the new tme_float_infinity_${_builtin_type}() and
                   2557:        tme_float_negative_${_builtin_type}() functions to get built-in
                   2558:        infinities and negative zeroes. 
                   2559:        (tme_ieee754_${precision}_value_from_builtin): Detect a negative zero
                   2560:        using a bit-for-bit comparison to a positive zero, since the C
                   2561:        equality operator may treat all zeroes as equal.  Fixed a bug where
                   2562:        roundup in a builtin-to-integer cast would affect the conversion. 
                   2563:        Removed an extraneous assignment to factor in the shell script. 
                   2564: 
                   2565:        * ic/sparc/sparc-misc.c (tme_sparc32_dump_memory): To avoid an
                   2566:        assertion failure with TLB lock debugging turned on, now save, set,
                   2567:        and restore the busy flag on the DTLB entry that the load function
                   2568:        will use (assuming that it will only use one). 
                   2569: 
                   2570:        * machine/sun2/sun2-mainbus.c (tme_machine_sun2,zs): Override the
                   2571:        default z8530 socket flags - on a sun2, the IEI lines are tied low. 
                   2572: 
                   2573:        * machine/sun3/SUN3-CARRERA: Removed the "delay 10000" option from
                   2574:        bpf1, to speed things up in general - however it is still needed when
                   2575:        netbooting NetBSD, to avoid a race condition in the kernel RARP client
                   2576:        (when the RARP response comes back before the tsleep() starts, the
                   2577:        wakeup() is lost). 
                   2578: 
                   2579:        * machine/sun3/sun3-mainbus.c (machine/sun3/sun3-mainbus.c): Now
                   2580:        propagate a reset signal from the m68k out to the busses. 
                   2581: 
                   2582:        * tme/threads.h: Now include <sys/time.h>. 
                   2583: 
                   2584:        * tme/generic/float.h: Added prototypes for
                   2585:        tme_float_infinity_${_builtin_type}() and
                   2586:        tme_float_negative_zero_${_builtin_type}(). 
                   2587: 
                   2588:        * tme/ic/z8530.h: Started a set of socket flags, and added the
                   2589:        tme_z8530_socket_flags to struct tme_z8530_socket. 
                   2590: 
                   2591:        * tme/machine/sun.h: In TME_SUN_Z8530_SOCKET_INIT, supply a default
                   2592:        value for the z8530 socket flags. 
                   2593: 
                   2594: Thu Mar 29 01:56:40 2007  Matthew Fredette  <[email protected]>
                   2595: 
                   2596:        * generic/fb-xlat-auto.sh: Fixed bugs where we would use the wrong
                   2597:        masks with TME_FB_XLAT_MAP_LINEAR_SCALE() when we needed to scale
                   2598:        large intensities down into a lookup range,
                   2599: 
                   2600:        * host/posix/posix-serial.c (_tme_posix_serial_th_reader): If we get
                   2601:        EOF, exit the thread. 
                   2602: 
                   2603:        * ic/m68k/m68k-impl.h: Keep the m68k TLB array pointers in unions with
                   2604:        regular bus TLB pointers, to avoid any aliasing problems when
                   2605:        allocating them. 
                   2606: 
                   2607:        * ic/m68k/m68k-misc.c (_tme_m68k_connection_make): When allocating the
                   2608:        m68k TLB arrays, pass pointers to the regular bus TLB pointers in
                   2609:        unions in struct tme_m68k, to avoid any aliasing problems. 
                   2610: 
                   2611:        * ic/sparc/sparc-execute.c (_TME_SPARC_EXECUTE_NAME): Cast a constant
                   2612:        to an unsigned type to silence a gcc warning. 
                   2613: 
                   2614:        * ic/sparc/sparc-impl.h: Keep the sparc TLB array pointers in unions
                   2615:        with regular bus TLB pointers, to avoid any aliasing problems when
                   2616:        allocating them. 
                   2617: 
                   2618:        * ic/sparc/sparc-insns-auto.sh: In the jmpl instructions, cast a
                   2619:        constant to an unsigned type to silence a gcc warning. 
                   2620: 
                   2621:        * ic/sparc/sparc-insns.c (tme_sparc32_rdpsr):
                   2622:        (tme_sparc32_wrpsr): Cast constants to an unsigned type to silence a
                   2623:        gcc warning. 
                   2624: 
                   2625:        * ic/sparc/sparc-misc.c (_tme_sparc_connection_make): When allocating
                   2626:        the TLB arrays, pass pointers to the regular bus TLB pointers in
                   2627:        unions in struct tme_sparc, to avoid any aliasing problems. 
                   2628:        (tme_sparc32_trap): Cast a constant to an unsigned type to silence a
                   2629:        gcc warning. 
                   2630:        (tme_sparc32_dump_memory): Added. 
                   2631: 
                   2632:        * machine/sun/sun-fb.c (TME_SUNFB_S4_REG): Added. 
                   2633:        (tme_bt458_omap_best): Fixed a bug where we would use the final loop
                   2634:        counter as the best colormap index. 
                   2635:        (_tme_sunfb_callout): Reworked to handled failed callouts better, and
                   2636:        added support for calling out framebuffer interrupts. 
                   2637:        (_tme_sunfb_callout_thread): The callout thread is now always present,
                   2638:        running when a condition is notified. 
                   2639:        (tme_sunfb_memory_update): Now notify the callout thread to call out
                   2640:        an interrupt if one is now pending. 
                   2641:        (tme_sunfb_bus_cycle_bt458): Now support 8-bit and 32-bit accesses. 
                   2642:        Schedule a mode change callout whenever the colormap or overlay map
                   2643:        changes.  Fixed bugs where we wouldn't read and write the bt458
                   2644:        register set correctly. 
                   2645:        (tme_sunfb_bus_cycle_s4): If a write covers the status register, clear
                   2646:        any pending interrupt.  Call _tme_sunfb_callout() to make any
                   2647:        callouts. 
                   2648:        (tme_sunfb_new): Initialize the callout thread condition, and create
                   2649:        the callout thread. 
                   2650:        (tme_sun_cgthree): Set the correct sunfb flags for a cgthree.  Fixed a
                   2651:        bug where we wouldn't initialize the bt458 colormap pointers to point
                   2652:        to the colormap. 
                   2653: 
                   2654:        * machine/sun/sun-fb.h: Since the callout thread is always present,
                   2655:        removed the flag that marked when it was.  Added flags for specifying
                   2656:        which byte in a 32-bit access to an 8-bit register is used.  In struct
                   2657:        tme_sunfb now track whether or not the framebuffer interrupt is
                   2658:        asserted, added a condition for notifying the callout thread, and
                   2659:        added an alias for the first S4 basic register. 
                   2660: 
                   2661:        * machine/sun/sun-keyboards.txt: Removed the acute keysym from the US
                   2662:        type 4 keyboard.  Its definition is the same as apostrophe, and it was
                   2663:        causing problems on hosts that actually have acute.  This is really a
                   2664:        bug in the keyboard emulation. 
                   2665: 
                   2666:        * machine/sun4/SUN4-75: Many changes. 
                   2667: 
                   2668:        * machine/sun4/sun44c-cache.c (_tme_sun44c_cache_new): Cast some
                   2669:        expressions in comparisons to an unsigned type, to silence a gcc
                   2670:        warning. 
                   2671: 
                   2672:        * machine/sun4/sun44c-control.c (_tme_sun44c_control_cycle_handler):
                   2673:        Cast a promoted expression to an unsigned type in a ternary operator
                   2674:        expression to silence a gcc warning. 
                   2675: 
                   2676:        * scsi/scsi-cdrom.c (tme_scsi_cdrom_cdb_read_toc):
                   2677:        (tme_scsi_cdrom_cdb_mode_sense): Cast some expressions to unsigned
                   2678:        types to silence a gcc warning. 
                   2679: 
                   2680: Sun Mar 25 21:18:50 2007  Matthew Fredette  <[email protected]>
                   2681: 
                   2682:        * dist/softfloat/softfloat/bits64/softfloat.c (float128_rem): Added a
                   2683:        cast to get better type agreement.  From [email protected] in
                   2684:        NetBSD PR pkg/34113. 
                   2685: 
                   2686:        * generic/bus-el.c (_tme_bus_intack): Now unlock the bus before
                   2687:        calling a device's interrupt acknowledge function, to avoid a
                   2688:        deadlock. 
                   2689: 
                   2690:        * ic/am7990.c (_tme_am7990_receive): Added a cast to avoid a
                   2691:        signed/unsigned comparison. 
                   2692: 
                   2693: Sat Mar 03 15:36:15 2007  Matthew Fredette  <[email protected]>
                   2694: 
                   2695:        * host/gtk/gtk-mouse.c (_tme_gtk_mouse_mouse_event): Now discard
                   2696:        double- and triple-click button events, since normal button press and
                   2697:        release events are always generated also. 
                   2698: 
                   2699:        * machine/sun/sun-cgtwo.c (_tme_suncg2_callout): Fixed a bug where we
                   2700:        tested the wrong variable for the mode change callout bit. 
                   2701: 
                   2702: Wed Feb 21 01:52:28 2007  Matthew Fredette  <[email protected]>
                   2703: 
                   2704:        * host/bsd/bsd-bpf.c (_tme_bsd_bpf_callout): Now check that the packet
                   2705:        being written has a reasonable size, and that the write succeeds. 
                   2706:        From [email protected] in NetBSD PR pkg/35305. 
                   2707: 
                   2708:        * host/gtk/gtk-display.h: Changed the signedness of the
                   2709:        tme_gtk_screen_mouse_warp_x and tme_gtk_screen_mouse_warp_y members to
                   2710:        get better type agreement.  From [email protected] in NetBSD PR
                   2711:        pkg/34113. 
                   2712: 
                   2713:        * host/gtk/gtk-mouse.c: Changed some types to get better type
                   2714:        agreement.  From [email protected] in NetBSD PR pkg/34113. 
                   2715: 
                   2716:        * host/gtk/gtk-screen.c (_tme_gtk_gdkimage_scanline_pad): Removed the
                   2717:        if that tests for the eight-bit case.  This avoids a gcc4 warning
                   2718:        about a possible missing return value, even though the possibility of
                   2719:        that was zero. 
                   2720: 
                   2721:        * ic/i825x6reg.h: The size mask in an i82586 TBD is 0x3fff (it's
                   2722:        0x7fff on a i82596).  From [email protected] in NetBSD PR pkg/35305. 
                   2723: 
                   2724:        * ic/ncr53c9x.c (_tme_ncr53c9x_stimreg_msec): Fixed a gcc4 warning. 
                   2725: 
                   2726:        * ic/ieee754/ieee754-ops-auto.sh: Now perform negation by multiplying
                   2727:        the source operand by -1, which correctly negates 0.0 into -0.0.  From
                   2728:        [email protected] in NetBSD PR pkg/34616. 
                   2729: 
                   2730:        * ic/m68k/m68k-execute.c (_TME_M68K_EXECUTE_NAME): Simplified how
                   2731:        PC-relative EAs are calculated.  This should fix NetBSD PR pkg/34538. 
                   2732: 
                   2733:        * ic/sparc/sparc-misc.c (tme_sparc_new): Increased the instruction
                   2734:        burst size to 800. 
                   2735:        (tme_sparc_do_reset): Now poison all idle type state to force the idle
                   2736:        type to retrain, since we may be booting a new kernel. 
                   2737: 
                   2738:        * libtme/module.c (tme_module_open): Changed the signedness of
                   2739:        tokens_count to get better type agreement.  From
                   2740:        [email protected] in NetBSD PR pkg/34113. 
                   2741: 
                   2742:        * machine/sun/sun-si.c (_tme_sun_si_bus_cycle_regs): Fixed an
                   2743:        uninitialized variable bug that wasn't noticed by gcc3, because the
                   2744:        value was never used.  From [email protected] in NetBSD PR
                   2745:        pkg/34113. 
                   2746:        (tme_sun_si): Changed a type to get better type agreement.  From
                   2747:        [email protected] in NetBSD PR pkg/34113. 
                   2748: 
                   2749:        * tme/memory.h (tme_memory_atomic_pointer_write): Fixed a bug where we
                   2750:        tried to use a ternary operator expression as an lvalue. 
                   2751: 
                   2752: Fri Feb 16 02:50:23 2007  Matthew Fredette  <[email protected]>
                   2753: 
                   2754:        * host/bsd/bsd-bpf.c (_tme_bsd_bpf_read): Fixed a bug where we would
                   2755:        drop packets or pass garbage packets because we weren't using
                   2756:        BPF_WORDALIGN() to determine the offset of the next packet.  Added
                   2757:        code to try to detect and strip off any CRC accidentally passed up
                   2758:        through BPF from a host network device driver. 
                   2759: 
                   2760:        * ic/m68k/m68010.c (_tme_m68010_rte): A zero returned by
                   2761:        tme_m68k_sequence_fill() or tme_m68k_insn_buffer_fill() also means a
                   2762:        format error. 
                   2763: 
                   2764:        * ic/m68k/m68020.c (_tme_m68020_rte): A zero returned by
                   2765:        tme_m68k_sequence_fill() or tme_m68k_insn_buffer_fill() also means a
                   2766:        format error. 
                   2767: 
                   2768:        * ic/m68k/m68k-execute.c ic/m68k/m68k-impl.h
                   2769:          ic/m68k/m68k-insns-auto.sh ic/m68k/m68k-insns.c
                   2770:          ic/m68k/m68k-misc-auto.sh ic/m68k/m68k-misc.c:
                   2771: 
                   2772:          Although I hate doing this, many changes to convert the m68k
                   2773:          emulation to the new TLB and memory discipline.  This has mainly
                   2774:          affected fast instruction fetching and memory access.  Fast
                   2775:          instruction fetches now happen directly into the instruction buffer,
                   2776:          with some optimizations to lessen the penalty for that.  Fast
                   2777:          fetches are now kept entirely out of the transfer accounting, and
                   2778:          the functions that empty and fill the instruction buffer from an
                   2779:          exception frame are also simpler now. 
                   2780:          All memory access functions now busy and unbusy a TLB entry and use
                   2781:          the generic memory access functions when doing fast transfers. 
                   2782:          The tme_m68k_rmw_start() and tme_m68k_rmw_finish() are completely
                   2783:          changed for the new TLB discipline.  All of the atomic instructions
                   2784:          are also completely changed.  All callouts are now wrapped in
                   2785:          tme_m68k_callout_unlock() and tme_m68k_callout_relock(), which will
                   2786:          unbusy and rebusy any instruction TLB entry for the fast executor,
                   2787:          and poison the fast executor if that TLB entry is now invalid. 
                   2788: 
                   2789: Thu Feb 15 02:15:41 2007  Matthew Fredette  <[email protected]>
                   2790: 
                   2791:        * generic/keyboard.c (_tme_keysym_state_get):
                   2792:        (tme_keyboard_buffer_in_macro):
                   2793:        (tme_keyboard_buffer_out_map):
                   2794:        (tme_keyboard_buffer_out_mode):
                   2795:        (_tme_keyboard_buffer_in2):
                   2796:        (_tme_keyboard_buffer_in0): Use tme_keyboard_hash_data_from_keyval()
                   2797:        to convert a tme_keyboard_keyval_t to a tme_hash_data_t. 
                   2798: 
                   2799:        * host/gtk/gtk-keyboard.c (_tme_gtk_keyboard_x11_new):
                   2800:        (_tme_gtk_keyboard_key_event): Use
                   2801:        tme_keyboard_hash_data_from_keyval() and
                   2802:        tme_keyboard_hash_data_to_keyval() to convert between
                   2803:        tme_keyboard_keyval_t and tme_hash_data_t. 
                   2804: 
                   2805:        * machine/sun/sun-bwtwo.c: Removed much code, which became the new
                   2806:        generic Sun framebuffer code.  The remaining bwtwo code now uses this
                   2807:        generic support.  Added support for the SBus bwtwo. 
                   2808: 
                   2809:        * machine/sun/sun-cgtwo.c (_tme_suncg2_validate_bitmaps):
                   2810:        (_tme_suncg2_validate_pixmap): Don't attempt to translate using
                   2811:        unsigned longs on 64-bit hosts. 
                   2812:        (_tme_suncg2_mode_change): Don't try to make any sense of the case
                   2813:        where the pixel colors don't select any bitmap.  In this case, or when
                   2814:        multiple bitmaps seem to be selected, just display the pixmap. 
                   2815: 
                   2816:        * machine/sun2/sun2-control.c (_TME_SUN2_REG_ACCESSED): Silence a
                   2817:        warning about comparing an unsigned quantity to be greater than or
                   2818:        equal to zero.  This would happen on 64-bit big-endian systems, due to
                   2819:        their particular struct tme_ic register layout. 
                   2820: 
                   2821:        * machine/sun2/sun2-mmu.c (_tme_sun2_mmu_reset): Now busy and
                   2822:        unbusy-fill the reset TLBs, so they are marked valid. 
                   2823: 
                   2824:        * machine/sun4/sun4-impl.h: Added a prototype for _tme_sun4_reset(). 
                   2825: 
                   2826:        * machine/sun4/sun4-mainbus.c (_tme_sun4_reset): Added. 
                   2827:        (_tme_sun4_command): Now use _tme_sun4_reset() to do the reset. 
                   2828:        (tme_machine_sun4): Fixed the usage string. 
                   2829: 
                   2830:        * machine/sun4/sun44c-control.c (_tme_sun44c_control_cycle_handler): A
                   2831:        write to the software reset bit in the enable register clears all
                   2832:        other bits in the register, and now call _tme_sun4_reset() to do the
                   2833:        reset. 
                   2834: 
                   2835:        * scsi/scsi-bus.c (_tme_scsi_bus_cycle): Skip any SCSI connection that
                   2836:        isn't waiting on any events and has no actions to take. 
                   2837: 
                   2838:        * tme/hash.h: Added macros for converting between tme_hash_data_t and
                   2839:        some integral types. 
                   2840: 
                   2841:        * tme/generic/ethernet.h: Define some Ethernet packet types. 
                   2842: 
                   2843:        * tme/generic/keyboard.h: Added macros to convert between a keyval and
                   2844:        a tme_hash_data_t. 
                   2845: 
                   2846:        * tme/scsi/scsi-cdb.h: Define extended sense key, ASC, and ASCQ
                   2847:        values.  Define struct tme_scsi_device_mode_blocks and give a
                   2848:        prototype for tme_scsi_device_mode_select_data(). 
                   2849: 
                   2850: Mon Feb 12 23:50:36 2007  Matthew Fredette  <[email protected]>
                   2851: 
                   2852:        * generic/bus.c (tme_bus_tlb_map): Fixed a word-size bug, where the
                   2853:        address offset was kept as a tme_bus_addr_t.  Since this offset can be
                   2854:        negative, and it's used in pointer arithmetic, it has to be a signed
                   2855:        long. 
                   2856: 
                   2857:        * generic/fb-xlat-auto.sh (TME_FB_XLAT_SHIFT_DST): Now detect when we
                   2858:        shifted a tme_uint32_t by 32 on an architecture where SHIFTMAX_INT32_T
                   2859:        is less than 32, and force the shifted result to zero. 
                   2860: 
                   2861:        * ic/ncr5380.c (_tme_ncr5380_bus_tlb_fill): Fixed a bug where we
                   2862:        wouldn't notice a TLB that was invalid. 
                   2863: 
                   2864:        * ic/ieee754/ieee754-misc-auto.sh (tme_ieee754_${precision}_value_builtin_set):
                   2865:        When rewriting x to be an infinity, don't set the float format until
                   2866:        the end, because we still need to test the original format x's sign. 
                   2867:        After converting a native result to the best native format for the
                   2868:        IEEE754 precision, don't forget to update x's float format. 
                   2869:        (tme_ieee754_${precision}_value_to_builtin): When the format has an
                   2870:        explicit integer bit, don't treat it as a fraction bit when the
                   2871:        exponent is the biased maximum. 
                   2872: 
                   2873:        * ic/m68k/m68k-bus-auto.sh: Fixed a bug where tme_m68k_router_32 was
                   2874:        defined static. 
                   2875: 
                   2876:        * ic/sparc/sparc-misc-auto.sh: Make sure that TME_SPARC_IREG_FPX is
                   2877:        aligned to four, since it is often used as a register pair, and the
                   2878:        ldd/std functions expect the first register of a pair (and later, some
                   2879:        quad load/store functions) to be aligned. 
                   2880: 
                   2881:        * machine/sun/sun-si.c (_tme_sun_si_tlb_fill_regs): Fixed a bug where
                   2882:        we were filling TLBs that supported fast reading.  We can't support
                   2883:        fast reading, because we have to fault on byte accesses, to support
                   2884:        the SunOS sc/si probes. 
                   2885: 
                   2886: Tue Jan 30 22:57:08 2007  Matthew Fredette  <[email protected]>
                   2887: 
                   2888:        * ic/am7990.c (_tme_am7990_init): Now log the init.  Fixed a bug where
                   2889:        we wouldn't start reading the Ethernet again after exiting loopback
                   2890:        mode. 
                   2891:        (_tme_am7990_start): Now log the start. 
                   2892:        (_tme_am7990_receive): Append dummy CRC bytes to each received frame. 
                   2893:        Log receive MISS and BUFF errors. 
                   2894:        (_tme_am7990_transmit): Log transmit BUFF errors. 
                   2895:        (_tme_am7990_bus_cycle): Log writes to CSRs other than CSR0. 
                   2896: 
                   2897: Sun Jan 21 15:45:01 2007  Matthew Fredette  <[email protected]>
                   2898: 
                   2899:        * libtme/misc.c (tme_misc_tokenize):
                   2900:        (_tme_misc_number_parse): Don't use the ctype macros with a char,
                   2901:        since it will be sign-extended to an int. 
                   2902: 
                   2903:        * libtme/module.c (tme_module_open): Don't use the ctype macros with a
                   2904:        char, since it will be sign-extended to an int. 
                   2905: 
                   2906:        * serial/serial-kb.c (tme_serial_,kb,keyboard): Don't use the ctype
                   2907:        macros with a char, since it will be sign-extended to an int. 
                   2908: 
                   2909: Fri Jan 19 01:01:07 2007  Matthew Fredette  <[email protected]>
                   2910: 
                   2911:        * host/gtk/gtk-display.h: In struct tme_gtk_display, track the next
                   2912:        keysym to try in the unused keysym allocator. 
                   2913: 
                   2914:        * host/gtk/gtk-keyboard.c (_tme_gtk_keyboard_lookup): Don't consider a
                   2915:        conversion of a string to a keysym successful unless the keysym
                   2916:        reverses to that same string. 
                   2917:        Fixed a bug in the code that tries to allocate an unused keysym for an
                   2918:        unknown string, where we would repeatedly allocate the first unused
                   2919:        keysym over and over again. 
                   2920: 
                   2921:        * ic/sparc/sparc-impl.h: Increased the size of the ITLB hash. 
                   2922: 
                   2923:        * ic/sparc/sparc-insns-auto.sh: Now emit code in the load and store
                   2924:        functions to track DTLB fills under _TME_SPARC_STATS. 
                   2925: 
                   2926:        * machine/sun/sun-keyboards.txt: Added a map for the US type 4
                   2927:        keyboard. 
                   2928: 
                   2929:        * scsi/cdrom-tme.c:
                   2930:        * scsi/scsi-cdrom.c:
                   2931:        * tme/scsi/scsi-cdrom.h: Added. 
                   2932: 
                   2933:        * scsi/scsi-device.c (tme_scsi_device_check_condition): Added. 
                   2934: 
                   2935:        * tme/scsi/scsi-device.h: Added a prototype for
                   2936:        tme_scsi_device_check_condition(). 
                   2937: 
                   2938: Thu Jan 18 02:15:49 2007  Matthew Fredette  <[email protected]>
                   2939: 
                   2940:        * tme/common.h: Added definitions of __tme_predict_true() and
                   2941:        __tme_predict_false() for gcc>=2.96. 
                   2942: 
                   2943: Sun Jan 14 16:53:04 2007  Matthew Fredette  <[email protected]>
                   2944: 
                   2945:        * generic/bus-el.c (tme_generic,bus): Fixed a printf string.  Some
                   2946:        changes to silence gcc -Wuninitialized. 
                   2947: 
                   2948:        * ic/sparc/Makefile.am: Added sparc-fpu-auto.sh to EXTRA_DIST. 
                   2949: 
                   2950:        * ic/sparc/sparc-execute.c (_TME_SPARC_EXECUTE_NAME): In NetBSD 3.x,
                   2951:        the idle loop wrpsrs use %l1 instead of %g1, and the annulled wrpsr
                   2952:        writes IPL_SCHED << 8, not PSR_PIL. 
                   2953: 
                   2954:        * ic/sparc/sparc-fpu-auto.sh: Removed the parameter lists from some
                   2955:        macro #undefs. 
                   2956: 
                   2957:        * ic/sparc/sparc-fpu.c (tme_sparc_fpu_new): Removed the parameter list
                   2958:        from a macro #undef. 
                   2959: 
                   2960:        * ic/sparc/sparc-insns.c (tme_sparc32_wrpsr): Updated the
                   2961:        netbsd32-type-0 idle type comment. 
                   2962: 
                   2963:        * ic/sparc/sparc-misc.c (tme_sparc_new): Increased the burst size. 
                   2964: 
                   2965:        * libtme/threads-sjlj.c (tme_sjlj_yield) [HAVE_GTK]: Fixed a bug where
                   2966:        we could round the number of microseconds to a whole second and leave
                   2967:        it that way. 
                   2968: 
                   2969:        * machine/Makefile.am: Added the sun4 directory to DIST_SUBDIRS. 
                   2970: 
                   2971:        * machine/sun/sun-fb.c (tme_bt458_omap_best): Fixed a bug caught by
                   2972:        gcc -Wuninitialized. 
                   2973: 
                   2974:        * scsi/Makefile.am: Added scsi-cdrom.c and cdrom-tme.c to
                   2975:        tme_scsi_la_SOURCES. 
                   2976: 
                   2977:        * scsi/scsi-tape.c (_tme_scsi_tape_mode_select_data): Fixed a bug
                   2978:        caught by gcc -Wuninitialized. 
                   2979: 
                   2980:        * tme/scsi/Makefile.am: Now install scsi-cdrom.h. 
                   2981: 
                   2982: Mon Jan 08 00:59:04 2007  Matthew Fredette  <[email protected]>
                   2983: 
                   2984:        * bus/Makefile.am: Added sbus to DIST_SUBDIRS. 
                   2985: 
                   2986:        * bus/sbus/Makefile.am:
                   2987:        * bus/sbus/sun-fbs4.c:
                   2988:        * tme/ic/bt458.h: Added. 
                   2989: 
                   2990:        * generic/scsi.c (tme_scsi_phase_resid): Added. 
                   2991: 
                   2992:        * ic/Makefile.am: Added sparc to DIST_SUBDIRS. 
                   2993:        Now build tme_ic_ncr53c9x.la, tme_ic_mk48txx.la, tme_ic_nec765.la,
                   2994:        tme_ic_am7930.la, tme_ic_am7990.la, and tme_ic_lsi64854.la. 
                   2995: 
                   2996:        * ic/ncr53c9x.c: Added tme_ncr53c9x_transfer_resid_detect_state to
                   2997:        struct tme_ncr53c9x, for detecting the SCSI transfer residual while
                   2998:        data is being transferred. 
                   2999:        (_tme_ncr53c9x_cs_monitor_phase): Now take a new argument that will
                   3000:        force the phase to be checked, even if there isn't any SCSI transfer
                   3001:        residual.  All callers changed. 
                   3002:        (_TME_NCR53C9X_CS_MONITOR_PHASE): Now check the phase immediately. 
                   3003:        (_TME_NCR53C9X_CS_TRANSFER): Now initialize the transfer residual
                   3004:        detect state to zero. 
                   3005:        (_tme_ncr53c9x_update): In TME_NCR53C9X_CMD_TRANSFER, fixed bugs for
                   3006:        the MESSAGE IN phase, and simplified the sequence for the MESSAGE OUT
                   3007:        phase.  Fixed many bugs for all of the target selection commands. 
                   3008:        (_tme_ncr53c9x_callout): When we're detecting the transfer residual
                   3009:        while data is being transferred, we can't transfer more than one byte
                   3010:        at a time from a TLB that only supports slow reading, and also call
                   3011:        tme_scsi_phase_resid() to do the detection. 
                   3012:        Don't hold ACK on a transfer unless it definitely includes the last
                   3013:        byte of the transfer. 
                   3014:        (_tme_ncr53c9x_scsi_cycle): Fixed a bug where we wouldn't note an
                   3015:        automatically asserted ACK or ATN in the active SCSI cycle. 
                   3016:        (_tme_ncr53c9x_bus_cycle): Fixed a bug where we wouldn't add to the
                   3017:        data FIFO at the head. 
                   3018: 
                   3019:        * ic/nec765.c (_tme_nec765_bus_cycle): More correctly alias reads and
                   3020:        writes to register number two on an i82072 to the MSR and DRS,
                   3021:        respectively.  This allows both the NetBSD fdc and the SunOS fd
                   3022:        drivers to work.
                   3023: 
                   3024:        * ic/sparc/sparc-execute.c: Now define tme_sparc_idle_type_pc
                   3025:        appropriately for the version. 
                   3026:        (_TME_SPARC_EXECUTE_NAME): When we begin a new instruction burst, if
                   3027:        the first instruction in the burst is the beginning of the idle loop,
                   3028:        go idle. 
                   3029:        Check an annulled instruction for the netbsd32-type-0 idle type. 
                   3030:        Check a branch for the sunos32-type-0 idle type.  Fixed a bug where
                   3031:        repeated annulled instructions could cause the instruction burst to
                   3032:        never finish. 
                   3033: 
                   3034:        * ic/sparc/sparc-fpu-auto.sh: Avoid a gcc -Wuninitialized warning by
                   3035:        setting fpreg_rd_format even for an unimplemented operation. 
                   3036: 
                   3037:        * ic/sparc/sparc-impl.h: Added support for idle types. 
                   3038: 
                   3039:        * ic/sparc/sparc-insns-auto.sh: In the slow read and write functions,
                   3040:        fixed a bug found by gcc -Wuninitialized in the unusual case where
                   3041:        this cycle is part fast, part slow, where we would use use an
                   3042:        uninitialized resid. 
                   3043: 
                   3044:        * ic/sparc/sparc-insns.c (tme_sparc32_rdasr): To avoid a gcc
                   3045:        -Wuninitialized warning, for an unimplemented rdasr set value to zero
                   3046:        even though we abort(). 
                   3047:        (tme_sparc32_rdpsr): Added support for the sunos32-type-0 idle type. 
                   3048:        (tme_sparc32_wrpsr): Added support for the sunos32-type-0 and
                   3049:        netbsd32-type-0 idle types. 
                   3050: 
                   3051:        * ic/sparc/sparc-misc.c (_tme_sparc_command):
                   3052:        (tme_sparc_do_idle): tme_sparc_fetch_nearby): Added. 
                   3053:        (tme_sparc_new): Now set _tme_sparc_command to handle commands. 
                   3054:        Poison the initial idle type state. 
                   3055: 
                   3056:        * machine/sun/sun-cgtwo.c: Use the new generic tme_sunfb_ functions
                   3057:        and macros instead of the older tme_sun_fb_p4_ functions. 
                   3058: 
                   3059:        * machine/sun/sun-fb.c: Replaced the old tme_sun_fb_p4_ functions with
                   3060:        the new generic tme_sunfb_ functions, and added support for more
                   3061:        sizes. 
                   3062:        Added all of the new generic Sun framebuffer support, including some
                   3063:        out-of-place Bt458 support. 
                   3064:        (tme_sun_cgthree): Added. 
                   3065: 
                   3066:        * machine/sun/sun-fb.h: Removed most of the P4-specific definitions. 
                   3067:        Added many definitions for a generic Sun framebuffer, including some
                   3068:        P4 and S4 specifics. 
                   3069: 
                   3070:        * machine/sun4/sun4-mainbus.c (tme_machine_sun4,bwtwo):
                   3071:        (tme_machine_sun4,si):
                   3072:        (tme_machine_sun4,cgtwo): Removed. 
                   3073: 
                   3074:        * scsi/scsi-bus.c (_tme_scsi_bus_cycle): Added an assert to the
                   3075:        bulk-copy code to check that the target is always in sequence step
                   3076:        one. 
                   3077: 
                   3078:        * scsi/scsi-device.c (_tme_scsi_device_cycle): Now log the message in
                   3079:        a MESSAGE_OUT phase.  Now extended messages have their own dispatch
                   3080:        array. 
                   3081:        (tme_scsi_device_target_mc): Added. 
                   3082:        (tme_scsi_device_new): By default, a new device will reject
                   3083:        synchronous negotiation. 
                   3084: 
                   3085:        * scsi/scsi-msg.c (tme_scsi_device_msg_target_reject): Added. 
                   3086: 
                   3087:        * tme/generic/scsi.h: Added the prototype for tme_scsi_phase_resid(). 
                   3088: 
                   3089:        * tme/ic/Makefile.am: Added bt458.h to tmeicinclude_HEADERS. 
                   3090: 
                   3091:        * tme/machine/sun.h: Added a prototype for tme_sun_cgthree(). 
                   3092: 
                   3093:        * tme/scsi/scsi-device.h: Now define TME_SCSI_DEVICE_DO_MSG_EXT(). 
                   3094:        Added a dispatch array for extended messages to struct
                   3095:        tme_scsi_device. 
                   3096:        Now declare tme_scsi_device_target_mc(). 
                   3097: 
                   3098:        * tme/scsi/scsi-msg.h: Now define TME_SCSI_MSG_EXT_SDTR.  Now declare
                   3099:        tme_scsi_device_msg_target_reject(). 
                   3100: 
                   3101: Sun Nov 26 16:37:55 2006  Matthew Fredette  <[email protected]>
                   3102: 
                   3103:        * generic/bus.c (tme_bus_tlb_fill): Fixed bugs in the support for bus
                   3104:        connections with nonzero sourced-address masks. 
                   3105: 
                   3106:        * ic/am7930.c:
                   3107:        * ic/am7990.c: Added. 
                   3108: 
                   3109:        * ic/mk48txx.c (_tme_mk48txx_bus_cycle): Added support for a
                   3110:        platform's year zero. 
                   3111: 
                   3112:        * ic/ieee754/ieee754-misc-auto.sh: Removed the simple
                   3113:        tme_ieee754_PRECISION_to_int32 functions in favor of the ops versions. 
                   3114: 
                   3115:        * ic/ieee754/ieee754-ops-auto.sh: Now emit ops for from_int32 and
                   3116:        from_int64.  Now allow an op to override the type of its first source
                   3117:        operand.  Made the generation of the preprocessor condition more
                   3118:        general.  Added some more support for integral source operands.  Fixed
                   3119:        a bug in substituting in softfloat function names. 
                   3120: 
                   3121:        * ic/sparc/sparc-fpu-auto.sh: Fixed the ops that convert between
                   3122:        integer and floating-point to use the regular IEEE754 ops. 
                   3123: 
                   3124:        * machine/sun4/sun4-mainbus.c (tme_machine_sun4,clock): Now set the
                   3125:        sun4 year zero in the mk48txx socket. 
                   3126: 
                   3127:        * scsi/scsi-bus.c (_tme_scsi_bus_callout): Now clear the actions and
                   3128:        events for a connection before they are called out, to prevent calling
                   3129:        them out again. 
                   3130:        Added support for the cycle marker bit. 
                   3131:        (_tme_scsi_bus_cycle): Added support for the cycle marker bit.  Added
                   3132:        support for TME_SCSI_ACTION_SELECT_WITH_ATN and
                   3133:        TME_SCSI_ACTION_DMA_INITIATOR_HOLD_ACK.  Moved the bulk DMA copy code
                   3134:        inside the slow initiator DMA code.  This allows the normal target and
                   3135:        initiator slow DMA code to always handle the boundaries of a transfer,
                   3136:        which (especially in the initiator hold ACK case) can be important. 
                   3137: 
                   3138:        * scsi/scsi-tape.c: Added the tme generic SCSI-1 tape to the list. 
                   3139:        (tme_scsi_tape_cdb_xfer0): Added a big hack to quickly fix NetBSD PR
                   3140:        pkg/34536. 
                   3141:        (_tme_scsi_tape_mode_select_data): Added. 
                   3142:        (tme_scsi_tape_cdb_block_limits):
                   3143:        (tme_scsi_tape_cdb_mode_select): Implemented. 
                   3144: 
                   3145:        * tme/common.h: Replaced the old TME_FIELD_MASK_EXTRACTS macros with a
                   3146:        single smarter version. 
                   3147:        Now TME_FIELD_MASK_DEPOSITU masks the value being deposited. 
                   3148: 
                   3149:        * tme/memory.h [!TME_THREADS_COOPERATIVE]: Now define
                   3150:        TME_MEMORY_BUS_BOUNDARY to be sizeof(tme_uint8_t), to avoid some
                   3151:        compiler warnings when the previous value of zero was used in some
                   3152:        comparisons. 
                   3153: 
                   3154:        * tme/generic/ethernet.h: Fixed a bug where the source address field
                   3155:        was named tme_ethernet_header_size. 
                   3156: 
                   3157:        * tme/generic/scsi.h: Renumbered the SCSI actions to allow for future
                   3158:        expansion, and also to add TME_SCSI_ACTION_DMA_INITIATOR_HOLD_ACK,
                   3159:        TME_SCSI_ACTION_SELECT_WITH_ATN, and TME_SCSI_ACTION_CYCLE_MARKER. 
                   3160: 
                   3161:        * tme/ic/mk48txx.h: Added tme_mk48txx_socket_year_zero to the socket
                   3162:        structure. 
                   3163: 
                   3164:        * tme/scsi/scsi-device.h: Expanded tme_scsi_device_data to 256 bytes,
                   3165:        to hold a large MODE SELECT parameter list. 
                   3166: 
                   3167: Thu Nov 16 02:54:40 2006  Matthew Fredette  <[email protected]>
                   3168: 
                   3169:        * generic/bus-el.c (_tme_bus_connections_new): Added support for the
                   3170:        'slot', 'offset', 'controller', and 'dma-offset' arguments. 
                   3171:        (TME_ELEMENT_SUB_NEW_DECL(tme_generic,bus)): Added real argument
                   3172:        processing, and added support for the arguments that define bus slots. 
                   3173: 
                   3174:        * generic/bus.c (tme_bus_tlb_fill): If this bus has a controller, and
                   3175:        the TLB fill request isn't from the controller, pass the TLB fill on
                   3176:        to the controller. 
                   3177:        (tme_bus_connection_make): Added support for making a connection to a
                   3178:        bus controller. 
                   3179: 
                   3180:        * generic/ethernet.c (tme_ethernet_chunks_copy): Made the destination
                   3181:        chunks structures const. 
                   3182:        (tme_ethernet_crc32_el): Added. 
                   3183: 
                   3184:        * ic/lsi64854.c ic/ncr53c9x.c ic/nec765.c machine/sun4/sun4-fdc.c
                   3185:          scsi/tape-tme.c tme/ic/nec765.h:
                   3186: 
                   3187:          Added. 
                   3188: 
                   3189:        * ic/ncr5380.c (_tme_ncr5380_signal): Now use TME_BUS_SIGNAL_WHICH()
                   3190:        to remove the flags from a bus signal. 
                   3191: 
                   3192:        * ic/z8530.c (_tme_z8530_channel_reset): Now have
                   3193:        TME_Z8530_RR1_ALL_SENT in the reset value for RR1. 
                   3194:        (_tme_z8530_bus_cycle): Now clear TME_Z8530_RR1_ALL_SENT when transmit
                   3195:        data is written. 
                   3196:        (_tme_z8530_read): Now set TME_Z8530_RR1_ALL_SENT when all transmit
                   3197:        data has been written. 
                   3198: 
                   3199:        * ic/ieee754/ieee754-misc-auto.sh: Now emit prototypes for the
                   3200:        functions that convert floats to 32-bit integers. 
                   3201: 
                   3202:        * ic/ieee754/ieee754-misc.c (tme_ieee754_fpreg_format): Added. 
                   3203: 
                   3204:        * ic/sparc/cy7c601.c (TME_ELEMENT_X_NEW_DECL(tme_ic_,sparc,cy7c601)):
                   3205:        The common CY7C601 has a PSR version of 1.  Use the default slow
                   3206:        instruction fetch function. 
                   3207: 
                   3208:        * ic/sparc/mb86900.c (TME_ELEMENT_X_NEW_DECL(tme_ic_,sparc,mb86900)):
                   3209:        Use the default slow instruction fetch function. 
                   3210: 
                   3211:        * ic/sparc/sparc-execute.c (_TME_SPARC_EXECUTE_NAME): Now save the ASI
                   3212:        mask for instructions in the CPU state. 
                   3213:        Now fetch all instructions with tme_memory_bus_read32(), which gives
                   3214:        all needed behavior (when threads are cooperative,
                   3215:        tme_memory_atomic_read32 means a function call).  Now log call
                   3216:        instructions, which makes reconstructing code flow possible. 
                   3217: 
                   3218:        * ic/sparc/sparc-fpu.c (tme_sparc_fpu_new): Fixed a bug where the FPU
                   3219:        version wasn't being put into the FSR. 
                   3220: 
                   3221:        * ic/sparc/sparc-impl.h: Now define TME_SPARC_SLOW_FLAG_INSN and
                   3222:        TME_SPARC_SLOW_FLAG_NO_FAULTS for the slow load and store functions. 
                   3223:        Now _tme_sparc_bus_fault/tme_sparc32_bus_fault get the flags passed to
                   3224:        the slow load/store function.  Added a prototype for
                   3225:        tme_sparc32_fetch_slow(). 
                   3226: 
                   3227:        * ic/sparc/sparc-insns-auto.sh: For the instructions that have
                   3228:        add-style condition codes, changed the calculation of C to match the
                   3229:        V8 architecture manual.  In the memory access instructions, instead of
                   3230:        using a tme_memory_atomic_ function, use a tme_memory_bus_ function,
                   3231:        which is how it should always have been.  Log jmpl instructions that
                   3232:        act as call or return instructions, which makes reconstructing code
                   3233:        flow possible.  In the slow load/store functions, use the ASI mask for
                   3234:        instructions if the instruction flag is specified, and allow the
                   3235:        CPU-specific bus fault handler to cancel a fault. 
                   3236: 
                   3237:        * ic/sparc/sparc-insns.c (tme_sparc32_rett): Fixed a bug where a user
                   3238:        PS wasn't restored into S correctly.  Fixed a bug where we wouldn't
                   3239:        redispatch after changing the PSR. 
                   3240:        (tme_sparc32_ticc): Fixed a bug where we thought the trap number was
                   3241:        in rd, instead of from rs1 + rs2. 
                   3242: 
                   3243:        * ic/sparc/sparc-misc.c (tme_sparc32_fetch_slow): Added. 
                   3244:        (tme_sparc32_bus_fault): When a fault happens during an instruction
                   3245:        fetch, ignore the fault if we're supposed to, otherwise return an
                   3246:        instruction access exception instead of a data access exception. 
                   3247: 
                   3248:        * libtme/module.c (_tme_modules_find): Fixed a bug where we wouldn't
                   3249:        check the LTDL_SHLIBPATH_VAR directory for modules. 
                   3250: 
                   3251:        * libtme/threads-sjlj.c (tme_sjlj_cond_sleep_yield): Added. 
                   3252: 
                   3253:        * machine/sun/sun-mmu.c: In struct tme_sun_mmu, added members for MMUs
                   3254:        with an address space hole. 
                   3255:        (tme_sun_mmu_new): If this MMU has an address space hole, adjust the
                   3256:        number of address bits and save a mask with the last significant
                   3257:        address bit set. 
                   3258:        (_tme_sun_mmu_lookup): If this MMU has an address space hole, and the
                   3259:        address to look up is in the hole, return the hole PTE. 
                   3260:        (tme_sun_mmu_pte_set):
                   3261:        (tme_sun_mmu_segmap_get):
                   3262:        (tme_sun_mmu_segmap_set): Handle addresses in an address space hole. 
                   3263:        (tme_sun_mmu_tlb_fill): Fixed a bug in the previous commit that would
                   3264:        not remember TLBs filled from invalid PTEs for later invalidation when
                   3265:        those PTEs are made valid.  However, don't remember TLBs filled in the
                   3266:        address hole. 
                   3267: 
                   3268:        * machine/sun/sun-si.c (_tme_sun_si_tlb_fill): Now use
                   3269:        tme_bus_tlb_initialize() to make a TLB entry passed on the stack
                   3270:        invalid, since tme_bus_tlb_invalidate() assumes that the TLB's locks
                   3271:        have been constructed. 
                   3272: 
                   3273:        * machine/sun4/Makefile.am: Added sun4-fdc.c to
                   3274:        tme_machine_sun4_la_SOURCES. 
                   3275: 
                   3276:        * machine/sun4/sun4-mainbus.c (_tme_sun4_connections_new): Only fill
                   3277:        the TLB set allocator on a bus connection for an actual bus, not the
                   3278:        other devices. 
                   3279: 
                   3280:        * machine/sun4/sun4-timer.c (_tme_sun4_timer_reset): Fixed a
                   3281:        TME_SUN4_IS_SUN4C to TME_SUN4_IS_SUN44C. 
                   3282:        (_tme_sun4_timer_cycle_control): Fixed a bug where we had the counter
                   3283:        values counting down, not up.  Fixed a TME_SUN4_IS_SUN4C to
                   3284:        TME_SUN4_IS_SUN44C.  Now log for all registers, and make the minimum
                   3285:        log level much higher to filter out these messages. 
                   3286: 
                   3287:        * machine/sun4/sun44c-mmu.c (_tme_sun44c_buserr_log): On a sun4c, add
                   3288:        0xf0000000 to the physical address displayed. 
                   3289:        (_tme_sun44c_tlb_fill_mmu):
                   3290:        (_tme_sun44c_tlb_fill_pte): Before a TLB has been filled, it has no
                   3291:        fault handlers, and since the TLB might be on the stack its handler
                   3292:        count is garbage, so always thread the initiator's bus connection down
                   3293:        as the first fault handler private value. 
                   3294: 
                   3295:        * scsi/Makefile.am: Added tape-tme.c to tme_scsi_la_SOURCES. 
                   3296: 
                   3297:        * scsi/scsi-device.c (tme_scsi_device_target_phase): Bumped the log
                   3298:        level for the various data phases so it's easier to filter the
                   3299:        messages out. 
                   3300:        (_tme_scsi_device_cycle): Fixed a bug in handling the length byte of
                   3301:        an extended message. 
                   3302: 
                   3303:        * serial/Makefile.am: Added serial-sink.c to tme_serial_kb_la_SOURCES. 
                   3304: 
                   3305:        * tme/Makefile.am: Replaced atomics.h with memory.h in
                   3306:        pkginclude_HEADERS. 
                   3307: 
                   3308:        * tme/connection.h: Now define TME_CONNECTION_BUS_SPARC. 
                   3309: 
                   3310:        * tme/threads.h: Now define TME_THREADS_COOPERATIVE to TRUE.  Now
                   3311:        define tme_thread_suspend_others() and tme_thread_resume_others(). 
                   3312:        [!TME_NO_DEBUG_LOCKS]: When __FILE__ and __LINE__ aren't defined,
                   3313:        fixed a bug where we would pass in NULL for __LINE__, instead of zero. 
                   3314:        Added a prototype for tme_sjlj_cond_sleep_yield(), and the
                   3315:        tme_cond_sleep_yield() macro.  Removed the old atomic memory access
                   3316:        support. 
                   3317: 
                   3318:        * tme/generic/bus.h: Now define
                   3319:        TME_BUS_CONNECTION_INT_FLAG_ADDRESSABLE and
                   3320:        TME_BUS_CONNECTION_INT_FLAG_CONTROLLER.  Now define struct
                   3321:        tme_bus_slot.  In struct tme_bus, keep a list of struct tme_bus_slot,
                   3322:        and track up to one bus connection that is the "controller" of the
                   3323:        bus. 
                   3324: 
                   3325:        * tme/generic/ethernet.h: Added a const to the prototype for
                   3326:        tme_ethernet_chunks_copy(), and added a prototype for
                   3327:        tme_ethernet_crc32_el(). 
                   3328: 
                   3329:        * tme/generic/ic.h: Quadrupled the value of TME_IC_REGS_SIZE, to
                   3330:        support the SPARC emulations and their large register sets.  In struct
                   3331:        tme_ic, fixed the definitions for the 64-bit register members, to
                   3332:        divide the TME_IC_REGS_SIZE by eight instead of sixteen. 
                   3333: 
                   3334:        * tme/ic/Makefile.am: Added sparc.h, mk48txx.h, and nec765.h to
                   3335:        tmeicinclude_HEADERS. 
                   3336: 
                   3337:        * tme/ic/ieee754.h: Now define macros describing an IEEE754 register
                   3338:        file.  Added a prototype for tme_ieee754_fpreg_format(). 
                   3339: 
                   3340:        * tme/machine/sun.h: Now define TME_SUN_IDPROM_OFF_MACHTYPE, and
                   3341:        macros for some possible machine and architecture types.  In struct
                   3342:        tme_sun_mmu_info, added tme_sun_mmu_info_topindex_bits, for describing
                   3343:        either the number of top address bits for region, or for the address
                   3344:        hole. 
                   3345: 
                   3346:        * tme/scsi/scsi-tape.h: In struct tme_scsi_tape, added members for
                   3347:        describing the minimum, maximum, and current block sizes. 
                   3348: 
                   3349:        * tmesh/tmesh-cmds.c (_tmesh_command_alias): Added. 
                   3350:        (tmesh_eval): Now dispatch an 'alias' command. 
                   3351: 
                   3352:        * tmesh/tmesh-impl.h: Now define TMESH_COMMAND_ALIAS. 
                   3353: 
                   3354:        * tmesh/tmesh-input.y: Added support for scanning and parsing the new
                   3355:        'alias' command. 
                   3356: 
                   3357: Sat Sep 30 13:48:38 2006  Matthew Fredette  <[email protected]>
                   3358: 
                   3359:        * bus/multibus/3c400.c bus/multibus/sun-mie.c bus/multibus/sun-sc.c
                   3360:          generic/bus-device-auto.sh generic/bus-device.c generic/bus-el.c
                   3361:          generic/bus.c host/posix/posix-memory.c host/posix/posix-serial.c
                   3362:          ic/am9513.c ic/i825x6.c ic/isil7170.c ic/mm58167.c ic/ncr5380.c
                   3363:          ic/z8530.c libtme/Makefile.am libtme/memory-auto.sh
                   3364:          machine/sun/sun-bwtwo.c machine/sun/sun-cgtwo.c
                   3365:          machine/sun/sun-mmu.c machine/sun/sun-obie.c machine/sun/sun-si.c
                   3366:          machine/sun2/sun2-impl.h machine/sun2/sun2-mmu.c
                   3367:          machine/sun3/sun3-impl.h machine/sun3/sun3-mmu.c tme/connection.h
                   3368:          tme/memory.h tme/tme.h tme/generic/bus-device.h tme/generic/bus.h
                   3369:          tme/ic/m68k.h tme/machine/sun.h:
                   3370: 
                   3371:          Changed how atomic values are handled.  Removed the TME_ATOMIC_ set
                   3372:          of macros, which may or may not use a rwlock to serialize access to
                   3373:          a value, and added the tme_memory_atomic_ set of macros, which
                   3374:          always requires an rwlock argument. 
                   3375:          This tme_memory_atomic_ set of macros also takes a compile-time
                   3376:          minimum alignment hint, covers a wide range of math operations, and
                   3377:          is guaranteed to work atomically for any access, no matter what the
                   3378:          actual alignment. 
                   3379:          Added the tme_memory_bus_ set of macros, which work just like the
                   3380:          tme_memory_atomic_ macros but only within a certain bus size - i.e.,
                   3381:          if a 32-bit bus size is specified, and an access crosses one
                   3382:          32-bit-aligned address boundary, the access will be split into two
                   3383:          atomic accesses. 
                   3384:          The tme_memory_atomic_ and tme_memory_bus_ macros should better
                   3385:          enable emulation on a non-cooperative threading host someday.  Added
                   3386:          the tme_memory_ set of macros, which don't access memory atomically
                   3387:          but still take the same compile-time minimum-alignment hint and are
                   3388:          guaranteed to work for any actual alignment.  This has caused
                   3389:          significant fallout in all TLB handling, since the first and last
                   3390:          address fields in a TLB were previously TME_ATOMICs, and TLBs were
                   3391:          invalidated by atomically updating these first to be greater than
                   3392:          last. 
                   3393:          This method would not have worked in a non-cooperative threading
                   3394:          host.  First, it was impossible to update both first and last
                   3395:          address fields simultaneously, and second, it was impossible to know
                   3396:          if anyone was using, or had committed to using, the TLB while you
                   3397:          were invalidating it.  Without knowing that the TLB can't be used
                   3398:          after invalidation, the invalidator can't continue and make other
                   3399:          changes that would give incorrect behavior if the TLB *is* actually
                   3400:          used later. 
                   3401:          So, TLBs have a new discipline.  They have "busy" and "invalid"
                   3402:          atomic flags.  Before a TLB entry is used, its busy flag is marked
                   3403:          true, and its invalid flag is checked.  If the invalid flag is true,
                   3404:          the TLB is unbusied and prepared for filling (see
                   3405:          tme_bus_tlb_unbusy_fill() and tme_bus_tlb_invalidate() for how they
                   3406:          synchronize and avoid interesting races), otherwise the TLB entry is
                   3407:          valid and won't be invalidated until its busy flag is set to false. 
                   3408:          To make this truly thread-safe, someday all slow bus cycle handlers
                   3409:          will have to take a TLB entry somehow, so they can correctly busy
                   3410:          the TLB entry before making the access. 
                   3411: 
                   3412:        * generic/ethernet.c generic/keyboard.c generic/mouse.c
                   3413:          libtme/element.c scsi/acb4000.c serial/serial-kb.c:
                   3414: 
                   3415:          Now explicitly include errno.h. 
                   3416: 
                   3417:        * host/bsd/bsd-bpf.c host/posix/posix-tape.c serial/serial-kb.h
                   3418:          serial/serial-ms.h tme/scsi/scsi-device.h:
                   3419: 
                   3420:          Now explicitly include tme/threads.h. 
                   3421: 
                   3422:        * ic/mk48txx.c ic/sparc/Makefile.am ic/sparc/cy7c601.c
                   3423:          ic/sparc/mb86900.c ic/sparc/sparc-bus-auto.sh
                   3424:          ic/sparc/sparc-execute.c ic/sparc/sparc-fpu-auto.sh
                   3425:          ic/sparc/sparc-fpu.c ic/sparc/sparc-impl.h
                   3426:          ic/sparc/sparc-insns-auto.sh ic/sparc/sparc-insns.c
                   3427:          ic/sparc/sparc-misc-auto.sh ic/sparc/sparc-misc.c
                   3428:          machine/sun4/Makefile.am machine/sun4/SUN4-75
                   3429:          machine/sun4/sun4-impl.h machine/sun4/sun4-mainbus.c
                   3430:          machine/sun4/sun4-timer.c machine/sun4/sun44c-cache.c
                   3431:          machine/sun4/sun44c-control.c machine/sun4/sun44c-memerr.c
                   3432:          machine/sun4/sun44c-mmu.c serial/serial-sink.c tme/ic/mk48txx.h
                   3433:          tme/ic/sparc.h:
                   3434: 
                   3435:          Added. 
                   3436: 
                   3437:        * machine/sun3/sun3-mainbus.c (_tme_sun3_command): Fixed a bug where
                   3438:        we wouldn't reset the VME bus. 
                   3439: 
                   3440:        * tme/atomics.h: Removed. 
                   3441: 
                   3442: Sun Dec 04 22:53:37 2005  Matthew Fredette  <[email protected]>
                   3443: 
                   3444:        * ic/ncr5380.c: Fixed a bug in the TME_NCR5380_REG_PUT macro. 
                   3445:        (_tme_ncr5380_reg_put): Now declared static. 
                   3446:        (_tme_ncr5380_callout): Fixed a comment.  Fixed a bug where we
                   3447:        wouldn't set the residual in the SCSI DMA structure. 
                   3448: 
                   3449:        * ic/m68k/m68k-execute.c (_TME_M68K_EXECUTE_NAME): Fixed a bug where
                   3450:        we would call the slow executor inside a return() statement. 
                   3451: 
                   3452:        * machine/sun/sun-cgtwo.c (_tme_suncg2_validate_bitmaps): Fixed a bug
                   3453:        where we were processing the pixmap into the bitmaps from
                   3454:        left-to-right, instead of from right-to-left like the individual pixel
                   3455:        bit translation requires. 
                   3456: 
                   3457:        * machine/sun/sun-si.c (tme_sun_si): Now fail and display the usage if
                   3458:        no si type is given.  Fixed the usage string. 
                   3459: 
                   3460: Sat Jun 11 13:47:23 2005  Matthew Fredette  <[email protected]>
                   3461: 
                   3462:        * machine/sun/sun-mmu.c: Removed the invalid segment member of the MMU
                   3463:        structure, since the hardware doesn't have the notion of an invalid
                   3464:        segment. 
                   3465:        (tme_sun_mmu_new): Now initialize the segment map with the last PMEG
                   3466:        number. 
                   3467:        (tme_sun_mmu_pte_get):
                   3468:        (tme_sun_mmu_pte_set):
                   3469:        (tme_sun_mmu_segmap_set): Removed checks for the invalid segment. 
                   3470: 
                   3471:        * machine/sun2/sun2-mmu.c (_tme_sun2_mmu_new): Now zero the MMU
                   3472:        information structure first, and don't provide the invalid segment
                   3473:        number. 
                   3474: 
                   3475:        * machine/sun3/sun3-mmu.c (_tme_sun3_mmu_new): Now zero the MMU
                   3476:        information structure first, and don't provide the invalid segment
                   3477:        number. 
                   3478: 
                   3479:        * tme/machine/sun.h: Removed tme_sun_mmu_info_seginv from struct
                   3480:        tme_sun_mmu_info. 
                   3481: 
1.1.1.3   root     3482: Sun May 15 01:24:11 2005  Matthew Fredette  <[email protected]>
                   3483: 
                   3484:        * Release 0.4 out.
                   3485: 
                   3486:        * configure.in: Fixed a bug where StaticGray, StaticColor, and
                   3487:        PseudoColor visuals would be considered indexed.  This would cause the
                   3488:        translation functions to incorrectly try to map intensities into pixel
                   3489:        subfields. 
                   3490: 
                   3491: Sat May 14 22:28:29 2005  Matthew Fredette  <[email protected]>
                   3492: 
                   3493:        * TODO: Updated. 
                   3494: 
                   3495:        * acinclude.m4 (AC_CHECK_FUNC_LONG): Added. 
                   3496: 
                   3497:        * configure.in: Now check for sys/bswap.h, bswap16(), and bswap32(). 
                   3498:        Now check for isinff(). 
                   3499:        Instead of taking a set of host display formats in the environment
                   3500:        variable TME_DISPLAYS, now take the configure argument
                   3501:        --with-tme-host-displays.  When debugging is disabled, to get best
                   3502:        performance now define macros that preprocess out a lot of debugging
                   3503:        code.  Debugging now defaults to disabled. 
                   3504: 
                   3505:        * generic/float.c [!HAVE_ISINFF] (isinff): Added. 
                   3506: 
                   3507:        * host/gtk/gtk-screen.c (_tme_gtk_screen_mode_change): Now initially
                   3508:        try to allocate new colors.  For any colors that fail, try to allocate
                   3509:        best-match colors.  Warn if even best-match colors could not be
                   3510:        allocated. 
                   3511: 
                   3512:        * ic/ieee754/ieee754-misc.c: Declare more single- and double-precision
                   3513:        constants. 
                   3514: 
                   3515:        * tme/common.h: Now include <sys/bswap.h> for the byteswapping
                   3516:        functions.  When the host is big-endian, try to use bswap16() and
                   3517:        bswap32() for byteswapping functions, otherwise define them.  Now
                   3518:        define little-endian conversion functions on big-endian hosts. 
                   3519: 
                   3520:        * tme/generic/float.h: Corrected some HAVE_ macros to _TME_HAVE_
                   3521:        macros.  Now include float.h and limits.h.  Added a prototype for
                   3522:        isinff(). 
                   3523: 
                   3524: Sat May 14 19:18:42 2005  Matthew Fredette  <[email protected]>
                   3525: 
                   3526:        * generic/fb-xlat-auto.sh: Fixed a bug in the initialization of
                   3527:        dst_masks_default, that was causing incorrect halving translation on
                   3528:        PseudoColor hosts. 
                   3529: 
                   3530:        * host/gtk/gtk-keyboard.c (_tme_gtk_keyboard_lookup): Fixed a bug in
                   3531:        the warning message when a keysym can't be generated by the host
                   3532:        keyboard. 
                   3533: 
                   3534:        * ic/ieee754/Makefile.am: Added -lm to libtme_ieee754_la_LDFLAGS. 
                   3535: 
                   3536:        * ic/m68k/m68k-opmap-dump.c:
                   3537:        * machine/sun3/sun3-carrera-eeprom.txt: Added. 
                   3538: 
                   3539:        * ic/m68k/m68k-opmap-make.pl: The previous opcode map functions were
                   3540:        too big (or complicated?) to be compiled in a reasonable amount of
                   3541:        time on slower machines.  Now compress the functions down by
                   3542:        initializing similar roots close to each other, and in groups whenever
                   3543:        possible.  This cuts down on the amount of params[] refilling and
                   3544:        function calls, and decreases the size of m68k-opmap.c by almost half. 
                   3545: 
                   3546:        * machine/sun3/Makefile.am: Added sun3-carrera-eeprom.txt to
                   3547:        examples_DATA. 
                   3548: 
                   3549:        * serial/serial-kb.c (_tme_serial_kb_connection_make): When a keyboard
                   3550:        macro can't be parsed, instead of aborting, just log a complaint. 
                   3551: 
                   3552: Sat May 14 01:43:33 2005  Matthew Fredette  <[email protected]>
                   3553: 
                   3554:        * acinclude.m4 (AC_CHECK_FLOAT_FORMAT): Fixed a tme_uint16_t, which
                   3555:        was causing failures on big-endian systems. 
                   3556: 
                   3557:        * ic/ieee754/softfloat-tme.c: Swapped some declarations that were with
                   3558:        the wrong comments. 
                   3559: 
                   3560:        * tme/ic/ieee754.h: Declare more single- and double-precision
                   3561:        constants. 
                   3562: 
                   3563: Wed May 11 00:15:42 2005  Matthew Fredette  <[email protected]>
                   3564: 
                   3565:        * dist/softfloat/softfloat/bits64/softfloat-macros (add192):
                   3566:        (sub192): Fixed some gcc3 signed/unsigned comparison warnings. 
                   3567: 
                   3568:        * dist/softfloat/softfloat/bits64/softfloat.c (roundAndPackFloatx80):
                   3569:        Fixed a gcc3 signed/unsigned comparison warning. 
                   3570: 
                   3571:        * ic/i825x6.c (_tme_i825x6_callout_ru):
                   3572:        (_tme_i825x6_callout): Fixed some gcc3 signed/unsigned comparison
                   3573:        warnings. 
                   3574: 
                   3575:        * ic/ieee754/ieee754-misc-auto.sh: Fixed a gcc3 signed/unsigned
                   3576:        comparison warning. 
                   3577: 
                   3578:        * machine/sun3/sun3-mainbus.c (_tme_sun3_bus_intack): Make signal
                   3579:        unsigned, to fix gcc3 signed/unsigned comparison warnings. 
                   3580: 
                   3581:        * tme/generic/float.h (tme_float_is_negative): Fixed all conditional
                   3582:        arms to be conditional expressions, to keep the type of the whole
                   3583:        expression int. 
                   3584: 
                   3585: Tue May 10 11:15:26 2005  Matthew Fredette  <[email protected]>
                   3586: 
                   3587:        * machine/sun3/SUN3-CARRERA: Disable obie0 by default. 
                   3588: 
                   3589: Tue May 10 00:38:19 2005  Matthew Fredette  <[email protected]>
                   3590: 
                   3591:        * host/gtk/gtk-keyboard.c (_tme_gtk_keyboard_attach): Connect the
                   3592:        key_press and key_release events with gtk_signal_connect_after, so we
                   3593:        can stop the event from propagating up to parents, where a GtkWindow
                   3594:        parent will do strange things with arrow key presses. 
                   3595: 
                   3596:        * ic/isil7170.c (_tme_isil7170_bus_cycle): Fixed an off-by-one bug in
                   3597:        the month register. 
                   3598: 
                   3599:        * machine/sun3/SUN3-CARRERA: Disable the serial console by default. 
                   3600: 
                   3601: Mon May 09 02:01:02 2005  Matthew Fredette  <[email protected]>
                   3602: 
                   3603:        * machine/sun/sun-cgtwo.c (_tme_suncg2_bus_cycle_regs): Wrap the
                   3604:        rasterop register log in #ifndef TME_NO_LOG, since the rasterop
                   3605:        register names array doesn't exist otherwise. 
                   3606: 
                   3607: Mon May 09 01:59:03 2005  Matthew Fredette  <[email protected]>
                   3608: 
                   3609:        * generic/ethernet.c (tme_ethernet_chunks_copy): Fixed a bug where the
                   3610:        size of the destination buffer would get loaded with the size of the
                   3611:        source buffer. 
                   3612: 
                   3613:        * generic/fb.c (_tme_fb_xlat_colors_get_set): Fixed a bug where the
                   3614:        number of colors allocated wasn't being saved. 
                   3615: 
                   3616:        * ic/i825x6.c (_tme_i825x6_fbl_refill): Now tolerate a Receive Buffer
                   3617:        with zero size. 
                   3618:        (_tme_i825x6_callout_ru): Initialize rbd_size early, since its value
                   3619:        is decreased early when a fake receive buffer is made from the RFD
                   3620:        Ethernet header space. 
                   3621: 
                   3622: Sat Apr 30 15:22:25 2005  Matthew Fredette  <[email protected]>
                   3623: 
                   3624:        * configure.in: Now determine the default display depth with xwininfo
                   3625:        -root, assuming that the root window is at the default depth.  If the
                   3626:        depth is greater than one, also determine the visual class and any
                   3627:        subfield masks, and include this information in the destination image
                   3628:        key.  Add support for color framebuffer images on the sun3. 
                   3629: 
                   3630:        * generic/bus.c (_tme_bus_cycle_xfer_resp_least_lane):
                   3631:        (tme_bus_cycle_xfer_reg): Added. 
                   3632: 
                   3633:        * generic/fb-xlat-auto.sh: Added support for color source and
                   3634:        destination images. 
                   3635: 
                   3636:        * generic/fb.c (tme_fb_xlat_best):
                   3637:        (tme_fb_xlat_is_optimal): Now consider source image class, mapping
                   3638:        type, mapping size, and subfield masks, and destination image mapping
                   3639:        type and subfield masks. 
                   3640:        (_tme_fb_xlat_colors_get_set):
                   3641:        (tme_fb_xlat_colors_get):
                   3642:        (tme_fb_xlat_colors_set): Added. 
                   3643: 
                   3644:        * host/gtk/gtk-display.h: Removed the monochrome invert mask from
                   3645:        struct tme_gtk_display.  Inversion is now specified by the
                   3646:        framebuffer. 
                   3647: 
                   3648:        * host/gtk/gtk-screen.c (_tme_gtk_screen_mode_change): Added color
                   3649:        support.  Now we determine the destination image class, mapping, and
                   3650:        any subfield masks.  We choose a translation function based on image
                   3651:        classes, mappings, and subfield masks, and allocate colors on behalf
                   3652:        of the translation function. 
                   3653: 
                   3654:        * ic/m68k/m68020.c (_tme_m68020_exception): Fixed a bug where a 32-bit
                   3655:        fetch wasn't marking the B stage as faulted. 
                   3656: 
                   3657:        * ic/m68k/m68k-execute.c (_TME_M68K_EXECUTE_NAME): Fixed a bug with
                   3658:        the instruction buffer.  Before, when the slow executor would take a
                   3659:        fault in the middle of a 32-bit instruction fetch, the successfully
                   3660:        fetched first 16 bits wouldn't get put in the instruction buffer by
                   3661:        the fault processing, because a fetch was only accounted for once it
                   3662:        fully succeeded.  When the fetch was resumed, the first 16 bits was
                   3663:        lost.  Now, a slow executor fetch is accounted for before it begins,
                   3664:        which guarantees that any partially fetched instruction makes it into
                   3665:        the instruction buffer. 
                   3666: 
                   3667:        * ic/m68k/m68k-misc-auto.sh: Now, we update the instruction buffer
                   3668:        fetch total and sizes values before we do the actual fetch, because we
                   3669:        may transfer a few bytes and then fault.  Without this, those few
                   3670:        bytes wouldn't get saved in the exception stack frame by
                   3671:        tme_m68k_insn_buffer_xfer(), because it wouldn't know about the fetch. 
                   3672:        Later, when the instruction would be resumed, tme_m68k_fetch32() won't
                   3673:        refetch them, because it knows they've already been fetched and thinks
                   3674:        they're still in the instruction buffer. 
                   3675: 
                   3676:        * machine/sun/Makefile.am: Now build sun-cgtwo.c for
                   3677:        libtme_machine_sun.la. 
                   3678: 
                   3679:        * machine/sun/sun-bwtwo.c (_tme_sunbw2_connections_new): Fill in the
                   3680:        new parts of the struct tme_fb_connection. 
                   3681:        (tme_sun_bwtwo): Fixed a bug in the argument processing. 
                   3682: 
                   3683:        * machine/sun/sun-cgtwo.c: Added. 
                   3684: 
                   3685:        * machine/sun2/SUN2-MULTIBUS: Since the Emulex emulation changed
                   3686:        slightly, make sure that NetBSD will still probe this as an Emulex. 
                   3687: 
                   3688:        * machine/sun3/SUN3-CARRERA: Added support for the cgthree board. 
                   3689: 
                   3690:        * machine/sun3/sun3-mainbus.c (tme_machine_sun3,cgtwo): Added. 
                   3691: 
                   3692:        * machine/sun3/sun3-mmu.c (_tme_sun3_tlb_fill_mmu): Temporarily work
                   3693:        around a bug in NetBSD/sun3 where the cgtwo is mapped at the wrong
                   3694:        physical address. 
                   3695: 
                   3696:        * tme/generic/bus.h: Added a prototype for tme_bus_cycle_xfer_reg(). 
                   3697: 
                   3698:        * tme/generic/fb.h: Added macros for the different image classes,
                   3699:        mapping types, and default subfield masks.  Also added macros for the
                   3700:        "any" subfield mask, and for the mask of the maximum index value. 
                   3701:        Expanded struct tme_fb_connection and struct tme_fb_xlat to include
                   3702:        image class, subfield masks, and mapping information.  Added
                   3703:        prototypes for tme_fb_xlat_colors_get() and tme_fb_xlat_colors_set(). 
                   3704: 
                   3705:        * tme/machine/sun.h: Added a prototype for tme_sun_cgtwo(). 
                   3706: 
                   3707: Wed Mar 23 12:42:56 2005  Matthew Fredette  <[email protected]>
                   3708: 
                   3709:        * ic/ieee754/ieee754-ops-auto.sh: Now emit ops for log, log10, and
                   3710:        exp. 
                   3711: 
                   3712:        * ic/m68k/m68010.c: TME_ELEMENT_X_NEW_DECL(tme_ic_,m68k,m68010): Now
                   3713:        call tme_m68k_opcodes_init_m68010() to initialize the opcode table. 
                   3714: 
                   3715:        * ic/m68k/m68020.c: TME_ELEMENT_X_NEW_DECL(tme_ic_,m68k,m68020): Now
                   3716:        call tme_m68k_opcodes_init_m68020() to initialize the opcode table. 
                   3717: 
                   3718:        * ic/m68k/m6888x.c (tme_m68k_fbcc): Fixed a bug in calculating the
                   3719:        target PC; the displacement is always added to the original PC plus
                   3720:        two.  Now always take a 32-bit displacement as a proper operand. 
                   3721: 
                   3722:        * ic/m68k/m68k-execute.c: Simplified how instructions are decoded and
                   3723:        executed.  Now, the first 16-bit instruction word is used to directly
                   3724:        index an array of 32-bit integers, each of which gives the
                   3725:        instruction's function number, the function's arguments, immediate
                   3726:        fetching and EA calculation information, and a single
                   3727:        special-operation escape bit.  Only two types of immediate fetches are
                   3728:        supported: a 16-bit fetch, sign-extended to 32 bits, and a 32-bit
                   3729:        fetch.  All of this speeds things up dramatically. 
                   3730:        [_TME_M68K_STATS]: Keep statistics on executed instructions. 
                   3731: 
                   3732:        * ic/m68k/m68k-impl.h: Removed TME_M68K_SIZE_SUBMAP_X,
                   3733:        TME_M68K_SIZE_16U8, TME_M68K_SIZE_16S32, TME_M68K_OPNUM_SUBMAP_X,
                   3734:        TME_M68K_OPNUM_UNDEF, and the list of special opcodes, all of which
                   3735:        were used only in the old opcode maps. 
                   3736:        Added macros for the decoded instruction parameters in the new opcode
                   3737:        maps. 
                   3738:        Removed the data structures used by the old opcode maps.  The EA
                   3739:        register is now a proper IC register.  Added statistics to struct
                   3740:        tme_m68k.  Removed the declarations of the small immediate arrays. 
                   3741:        The small immediates are now proper IC registers.  Added declarations
                   3742:        of the different CPUs' opcode maps and their initialization functions,
                   3743:        and the instruction function array.  Added declarations for
                   3744:        tme_m68k_bccl(), tme_m68k_bsrl(), tme_m68k_divl() and tme_m68k_mull(). 
                   3745: 
                   3746:        * ic/m68k/m68k-insns.c (tme_m68k_bccl):
                   3747:        (tme_m68k_bsrl):
                   3748:        (tme_m68k_link):
                   3749:        (tme_m68k_rtd): Now that the opcode map supports 16-bit immediates
                   3750:        sign-extended to 32 bits, always take a proper 32-bit operand. 
                   3751: 
                   3752:        * ic/m68k/m68k-iset.txt: Now that the opcode map supports 16-bit
                   3753:        immediates sign-extended to 32 bits again, make rtd and the 16-bit
                   3754:        versions of link, bsr, bcc, and fbcc take this kind of immediate. 
                   3755: 
                   3756:        * ic/m68k/m68k-misc.c (tme_m68k_exception): Now log a message when a
                   3757:        double fault causes a processor halt. 
                   3758: 
                   3759:        * ic/m68k/m68k-opmap-make.pl: The initial rewrite of the opcode map
                   3760:        generation resulted in an enormous opcode map source file, and,
                   3761:        because the instruction function pointers were in the map entries
                   3762:        directly, an opcode map array that wasn't 64-bit friendly. 
                   3763:        Now, the instruction function pointers are in a small separate array
                   3764:        which is indexed by eight bits in the 32-bit opcode parameter
                   3765:        information, which is all that remains in the opcode map.  To make
                   3766:        room for these eight bits, the first EA mode and reg fields are not
                   3767:        stored (and are instead are swapped in by the instruction executer
                   3768:        after the instruction function has been fetched), and the special
                   3769:        operation field has been reduced to a single bit.  To shrink the
                   3770:        opcode map sources, we take advantage of the fact that each of the
                   3771:        1024 aligned sets of 64 opcodes (a "root") uses one of a small number
                   3772:        of patterns to initialize itself (for m68000 through m68020, there are
                   3773:        only 37 such patterns), and we generate a function to initialize the
                   3774:        parameters in that pattern.  Also, each CPU uses the previous CPU's
                   3775:        opcode initialization function to initialize the bulk of its opcode
                   3776:        map, making changes only as needed. 
                   3777:        All of this has reduced the size of the opcode map source file
                   3778:        dramatically. 
                   3779:        Also, support for 16-bit immediates, sign-extended to 32 bits, has
                   3780:        been added again. 
                   3781: 
                   3782: Tue Mar 15 02:56:58 2005  Matthew Fredette  <[email protected]>
                   3783: 
                   3784:        * ic/m68k/m6888x.c (tme_m68k_fbcc): All 16-bit immediates are now
                   3785:        sign-extended to 32-bits in a fixed immediate register. 
                   3786: 
                   3787:        * ic/m68k/m68k-insns.c (_tme_m68k_bcc):
                   3788:        (tme_m68k_bccl):
                   3789:        (_tme_m68k_bsr):
                   3790:        (tme_m68k_bsrl): Added. 
                   3791:        (tme_m68k_bcc): Now just use _tme_m68k_bcc. 
                   3792:        (tme_m68k_bsr): Now just use _tme_m68k_bsr. 
                   3793:        (tme_m68k_link): Now handle the 16-bit variant explicitly. 
                   3794:        (tme_m68k_rtd): Now handle our 16-bit argument correctly. 
                   3795:        (tme_m68k_mull):
                   3796:        (tme_m68k_divl): Added. 
                   3797: 
                   3798: Thu Mar 10 13:29:42 2005  Matthew Fredette  <[email protected]>
                   3799: 
                   3800:        * ic/m68k/m68010.c: Now define _TME_M68K_EXECUTE_OPMAP to
                   3801:        tme_m68k_opcodes_m68010 when compiling the executors. 
                   3802:        TME_ELEMENT_X_NEW_DECL(tme_ic_,m68k,m68010): No longer call
                   3803:        _tme_m68010_decoder_map_init(). 
                   3804: 
                   3805:        * ic/m68k/m68020.c: Now define _TME_M68K_EXECUTE_OPMAP to
                   3806:        tme_m68k_opcodes_m68020 when compiling the executors. 
                   3807:        TME_ELEMENT_X_NEW_DECL(tme_ic_,m68k,m68020): No longer call
                   3808:        _tme_m68020_decoder_map_init(). 
                   3809: 
                   3810:        * ic/m68k/m68k-insns-auto.sh: cas2 now gets its specop2 as a 16-bit
                   3811:        operand.  moves now must do its own memory cycles, and EA
                   3812:        postincrement and predecrement. 
                   3813:        Now track memory statistics in the memory functions. 
                   3814: 
                   3815:        * ic/m68k/m68k-iset.txt: Many simplifications, and some expansions, to
                   3816:        enable faster instruction dispatching.  Eliminated all specops except
                   3817:        for specop16 and fpgen, eliminated the #16S32 immediate type (all
                   3818:        16-bit immediates are now sign-expanded to 32 bits), and bcc and bsr
                   3819:        are now expanded (multiple iset lines may expand to the same pattern,
                   3820:        with the first one winning, but also with a system of * understood by
                   3821:        m68k-opmap-make.pl to count the correct number of duplicates). 
                   3822: 
                   3823:        * ic/m68k/m68k-misc-auto.sh: Now define a 96-bit register for
                   3824:        immediates.  Now define registers for the constants zero through
                   3825:        eight. 
                   3826: 
                   3827:        * ic/m68k/m68k-misc.c: Removed the small immediates arrays. 
                   3828:        (_tme_m68k_connection_break): Now return zero, to silence a warning
                   3829:        (?). 
                   3830:        (tme_m68k_new): Increased the instruction burst size to 200.  This
                   3831:        dramatically improves performance.  Now initialize the small
                   3832:        immediates. 
                   3833:        (tme_m68k_redispatch): Count redispatch statistics. 
                   3834:        (tme_m68k_tlb_fill): Count TLB fill statistics. 
                   3835:        (tme_m68k_dump): No longer display the specop2 value. 
                   3836: 
                   3837:        * ic/m68k/m68k-opmap-make.pl (operand_final): Removed. 
                   3838: 
                   3839:        * ic/m68k/m68k-opmap-make.pl: Rewritten to support much faster
                   3840:        dispatching of instructions.  Now each CPU gets an independent
                   3841:        64K-entry array, indexed by first instruction word, that yields a
                   3842:        function pointer and 32 bits of parameter information.  This
                   3843:        information includes struct tme_m68k-relative offsets for the
                   3844:        function's operands, EA and immediate fetching information, and specop
                   3845:        information. 
                   3846: 
                   3847: Fri Feb 18 04:12:55 2005  Matthew Fredette  <[email protected]>
                   3848: 
                   3849:        * bus/multibus/sun-mie.c (_tme_sun_mie_tlb_set_allocate): Atomic
                   3850:        variable changes. 
                   3851:        (_tme_sun_mie_tlb_fill): Don't invalidate a TLB entry if it happens to
                   3852:        be the same as the one we're filling. 
                   3853: 
                   3854:        * bus/multibus/sun-sc.c (_tme_sun_sc_bus_cycle_dma): Fixed a bug where
                   3855:        we would do 16-bit accesses in 8-bit mode. 
                   3856:        (_tme_sun_sc_intack): Added. 
                   3857:        (_tme_sun_sc_cycle_new):
                   3858:        (_tme_sun_sc_callout):
                   3859:        (_tme_sun_sc_bus_cycle_data_reg):
                   3860:        (_tme_sun_sc_bus_cycle_icr):
                   3861:        (_tme_sun_sc_scsi_cycle): Mostly mechanical changes to support the new
                   3862:        events/actions SCSI bus interface. 
                   3863:        (_tme_sun_sc_connection_make_scsi): No longer get any predefined SCSI
                   3864:        sequences. 
                   3865:        (_tme_sun_sc_connections_new): No longer provide a predefined SCSI
                   3866:        sequence function. 
                   3867:        (tme_bus_multibus,sun_sc): Added support for the "vme" argument. 
                   3868: 
                   3869:        * generic/fb-xlat-auto.sh: Fixed a serious bug where we would decide
                   3870:        that FIFOs are always aligned, even when the FIFO's bits per pixel
                   3871:        value isn't known at compile time. 
                   3872:        Fixed a bug where xlat_run would get decremented during every loop
                   3873:        iteration, instead of only after every translated source 32-bit word. 
                   3874:        When the loop isn't unrolled for source pixels, this causes xlat_run
                   3875:        to go negative too early, which can stop translation. 
                   3876: 
                   3877:        * generic/scsi.c (tme_scsi_connection_score): No longer score based on
                   3878:        a predefined SCSI sequence function. 
                   3879: 
                   3880:        * ic/m68k/Makefile.am: Now build the m6888x support, which depends on
                   3881:        the ieee754 support. 
                   3882: 
                   3883:        * ic/m68k/m68k-impl.h:
                   3884:        * tme/ic/m68k.h: Added m6888x support. 
                   3885: 
                   3886:        * ic/m68k/m68k-iset.txt: Added the floating-point instructions. 
                   3887: 
                   3888:        * ic/m68k/m68k-misc.c (_tme_m6888x_enable): Added. 
                   3889:        (_tme_m68k_connection_score): A bus must not provide an m6888x enable
                   3890:        function. 
                   3891:        (_tme_m68k_connections_new): A m68k provides an m6888x enable
                   3892:        function. 
                   3893:        (tme_m68k_new): Now pass FPU arguments to tme_m68k_fpu_new(), and
                   3894:        display the FPU usage with tme_m68k_fpu_usage(). 
                   3895:        (tme_m68k_do_reset): Reset any FPU. 
                   3896: 
                   3897:        * machine/sun2/SUN2-MULTIBUS: Make the bpf attachment for ie0 delay
                   3898:        packets slightly.  This works around a sleep/wakeup race condition in
                   3899:        the NetBSD kernel RARP code. 
                   3900:        Changed the type of the bwtwo from obmem to multibus, since the bwtwo
                   3901:        implementation is now common to all sun machines. 
                   3902: 
                   3903:        * machine/sun3/SUN3-CARRERA: Now define an unknown-compliance m68881. 
                   3904:        Now use the revision 3.0 ROM. 
                   3905:        Increased the size of the VME bus to the full 4GB.  Commented out the
                   3906:        sc0 attachment, in favor of the new si0 attachment. 
                   3907:        To support stock NetBSD 1.6*, make the Emulex tape respond to INQUIRY
                   3908:        commands in a normal way. 
                   3909: 
                   3910:        * machine/sun3/sun3-control.c (_tme_sun3_control_cycle_handler): Call
                   3911:        out changes to the FPU and DVMA enable bits.  Silently ignore an
                   3912:        attempt to enable the Sun FPA. 
                   3913: 
                   3914:        * machine/sun3/sun3-impl.h: Now track the active DVMA TLBs, so that
                   3915:        they can be invalidated when DVMA is enabled or disabled.  Atomic
                   3916:        variable fixes, and a prototype for _tme_sun3_mmu_sdvma_change(). 
                   3917: 
                   3918:        * machine/sun3/sun3-mmu.c (_tme_sun3_cycle_dummy):
                   3919:        (_tme_sun3_sdvma_disabled):
                   3920:        (_tme_sun3_mmu_sdvma_change): Added. 
                   3921:        (_tme_sun3_bus_tlb_fill): Now track TLB entries filled for DVMA space. 
                   3922:        Entries that are filled while DVMA is disabled generate a VME bus
                   3923:        fault.  For now, bus cycles to unmapped DVMA addresses are ignored. 
                   3924:        (_tme_sun3_tlb_fill_mmu): Apparently the magic obio mapping of the
                   3925:        PROM works over a PROM-sized region starting at 0x100000.  Made some
                   3926:        changes to silence -Wuninitialized. 
                   3927:        (_tme_sun3_mmu_tlb_set_allocate): Atomic variable changes. 
                   3928: 
                   3929:        * scsi/scsi-bus.c: Replaced the idea of a SCSI sequence with the much
                   3930:        simpler idea of a bus agent waiting for one or more SCSI events to
                   3931:        happen, then taking one or more SCSI actions. 
                   3932:        (_tme_scsi_bus_callout): Now call out the events triggered and actions
                   3933:        taken to the connection. 
                   3934:        (_tme_scsi_bus_cycle): Now take the events to wait on and the actions
                   3935:        to take from the connection.  A connection waits until one of its
                   3936:        events triggers, then some part of its actions are taken.  There is
                   3937:        now support for half and full SCSI bus arbitration, and reselection. 
                   3938:        (_tme_scsi_bus_sequence_get): Removed. 
                   3939:        (_tme_scsi_bus_connection_score):
                   3940:        (_tme_scsi_bus_connections_new): We can't provide a predefined
                   3941:        sequence function any more, or score a connection based on one. 
                   3942: 
                   3943:        * scsi/scsi-device.c (_tme_scsi_device_callout):
                   3944:        (_tme_scsi_device_cycle): More or less mechanical changes to support
                   3945:        the new events/actions SCSI bus interface.  Fixed a bug where we would
                   3946:        go past the end of the message dispatch array for IDENTIFY messages. 
                   3947:        (tme_scsi_device_connections_new): Removed the predefined SCSI
                   3948:        sequence member assignment. 
                   3949: 
                   3950:        * scsi/scsi-tape.c (tme_scsi_tape_cdb_inquiry): It looks like
                   3951:        nonexistent LUNs are reported as "unsupported", and not "not present". 
                   3952:        Now identify as a SCSI-1 device, and be sure not to return more data
                   3953:        than the initiator requested. 
                   3954: 
                   3955:        * tme/common.h: Now declare _tme_volatile. 
                   3956:        Added some missing parentheses to _TME_FIELD_DEPOSIT().  Fixed a bug
                   3957:        in the definition of the tme_value64_uint32s[] member of union
                   3958:        tme_value64. 
                   3959:        Added definitions for tme_value64_imul() and tme_value64_idiv(). 
                   3960: 
                   3961:        * tme/generic/Makefile.am: Now install float.h. 
                   3962: 
                   3963:        * tme/generic/bus.h: Now define TME_BUS_SIGNAL_DRQ and
                   3964:        TME_BUS_SIGNAL_DACK. 
                   3965: 
                   3966:        * tme/generic/scsi.h: Now define TME_SCSI_ID_SELECTED() and
                   3967:        TME_SCSI_ID_RESELECTED(), to determine if an ID is being selected or
                   3968:        reselected.  Replaced the idea of a SCSI sequence with the much
                   3969:        simpler idea of a bus agent waiting for one or more SCSI events to
                   3970:        happen, then taking one or more SCSI actions. 
                   3971: 
                   3972:        * tme/ic/Makefile.am: Now install i825x6.h and ieee754.h. 
                   3973: 
                   3974:        * tme/machine/sun.h: Added a prototype for tme_sun_si(). 
                   3975: 
                   3976:        * tme/scsi/scsi-device.h: Removed the old predefined SCSI sequences
                   3977:        from struct scsi_device. 
                   3978: 
                   3979:        * tme/scsi/scsi-msg.h: Now define TME_SCSI_MSG_IDENTIFY_LUN_MASK, for
                   3980:        getting the LUN out of an IDENTIFY message. 
                   3981: 
                   3982:        * tmesh/tmesh-input.y: Now define YYMAXDEPTH, to silence -Wundef. 
                   3983: 
                   3984: Thu Feb 17 13:42:44 2005  Matthew Fredette  <[email protected]>
                   3985: 
                   3986:        * Makefile.am: Added tools/ to SUBDIRS, and dist/ to EXTRA_DIST. 
                   3987:        Added a dist-hook target to clean the CVS directories out of dist/. 
                   3988: 
                   3989:        * acinclude.m4 (AC_CHECK_FLOAT_FORMAT):
                   3990:        (AC_CHECK_FLOAT_LIMITS): Added. 
                   3991: 
                   3992:        * configure.in: Bumped version to 0.4. 
                   3993:        Now check for limits.h and float.h.  Check for volatile, float,
                   3994:        double, and long double, and the signal handler type. 
                   3995:        Added ieee754 and ncr5380 to the list of sun3 ICs.  When using gcc,
                   3996:        now use -Wundef when compiling with warnings, and set the no strict
                   3997:        aliasing flag.  Add the floating point format configuration to
                   3998:        tmeconfig.h. 
                   3999: 
                   4000:        * generic/Makefile.am: Now build float.c and float-auto.c, and include
                   4001:        float-auto.sh and float-auto.c in the distribution. 
                   4002: 
                   4003:        * generic/bus-el.c generic/bus.c machine/sun/sun-mmu.c
                   4004:          machine/sun/sun-obie.c machine/sun2/sun2-impl.h
                   4005:          machine/sun2/sun2-mmu.c tme/atomics.h tme/generic/bus.h
                   4006:          tme/machine/sun.h:
                   4007: 
                   4008:          Cleaned up atomic variables.  Now atomic variables declared with
                   4009:          TME_ATOMIC and TME_ATOMIC_POINTER_TYPE are volatile.  To do this
                   4010:          right, TME_ATOMIC_POINTER_TYPE changed to take just the base type
                   4011:          pointed to, so there has been some fallout. 
                   4012: 
                   4013:        * generic/float-auto.sh generic/float.c ic/ncr5380.c
                   4014:          ic/ieee754/Makefile.am ic/ieee754/ieee754-misc-auto.sh
                   4015:          ic/ieee754/ieee754-misc.c ic/ieee754/ieee754-ops-auto.sh
                   4016:          ic/ieee754/ieee754-precision.sh ic/ieee754/softfloat-tme.c
                   4017:          ic/ieee754/softfloat-tme.h ic/m68k/m6888x-auto.sh ic/m68k/m6888x.c
                   4018:          machine/sun/sun-si.c tme/generic/float.h tme/ic/ieee754.h
                   4019:          tools/Makefile.am:
                   4020: 
                   4021:          Added. 
                   4022: 
                   4023:        * host/posix/posix-disk.c (tme_host_posix,disk): Only probe for the
                   4024:        block size if the device is a character device.  If we have mmap
                   4025:        support, the block size for all devices must be some multiple of the
                   4026:        page size - this fixes a bug where we would try to mmap()
                   4027:        non-page-sized regions at non-page boundaries. 
                   4028: 
                   4029:        * ic/Makefile.am: Added ieee754 to the list of distribution
                   4030:        subdirectories.  Now build ncr5380.c. 
                   4031:        Added i825x6reg.h to the list of i825x6 sources. 
                   4032: 
                   4033:        * ic/m68k/m68020.c (_tme_m68020_exception):
                   4034:        (_tme_m68020_rte): Fixed bugs in the handling of bus fault frames for
                   4035:        instruction fetches.  Previously, we would always fault on stage B,
                   4036:        and only on stage C for a 32-bit fetch.  This was supposed to be the
                   4037:        other way around.  Also, an address error doesn't set a fault bit,
                   4038:        only a rerun bit. 
                   4039: 
                   4040:        * ic/m68k/m68k-execute.c (_TME_M68K_EXECUTE_NAME): Fixed some bugs
                   4041:        caught by gcc -Wuninitialized. 
                   4042: 
                   4043:        * ic/m68k/m68k-opmap-make.pl: Fixed a bug where the illegal opcode
                   4044:        wouldn't get the 'illegal' specop. 
                   4045: 
                   4046:        * libtme/threads-sjlj.c [HAVE_GTK]: Define G_ENABLE_DEBUG if it isn't
                   4047:        defined, to silence -Wundef. 
                   4048: 
                   4049:        * machine/sun/sun-mmu.c (tme_sun_mmu_tlb_fill): Fixed a serious bug
                   4050:        where any page marked as modified was given out as writable, even if
                   4051:        it wasn't marked as writable.  SunOS likes to set page table entries
                   4052:        that are modified, but not writable, and this bug was preventing
                   4053:        proper copy-on-write behavior. 
                   4054: 
                   4055:        * machine/sun2/Makefile.am: No longer build sun2-bwtwo.c. 
                   4056: 
                   4057:        * machine/sun2/sun2-bwtwo.c: Removed. 
                   4058: 
                   4059:        * machine/sun2/sun2-mainbus.c (_tme_sun2_connections_new): Fixed bugs
                   4060:        in forming the list of free buses. 
                   4061:        (tme_machine_sun2,zs): Now use the standard Sun z8530 socket
                   4062:        definition. 
                   4063:        (tme_machine_sun2,bwtwo): Added. 
                   4064: 
                   4065:        * machine/sun3/sun3-mainbus.c (_tme_sun3_bus_signal): Apparently,
                   4066:        SunOS likes to set both the level 5 and level 7 clock interrupt enable
                   4067:        bits.  The level 5 bit seems to take precedence. 
                   4068:        (_tme_sun3_connection_score): Insist on a m68020 or better. 
                   4069:        (tme_machine_sun3,si): Added. 
                   4070: 
                   4071:        * scsi/emulexmt02.c (_tme_emulexmt02_cdb_request_sense): Fixed a bug
                   4072:        where we weren't putting the Emulex error code in the sense. 
                   4073:        (_tme_emulexmt02_cdb_inquiry): Added a hack to make this tape usable
                   4074:        to install SunOS 4.1.1. 
                   4075:        (tme_scsi_tape_emulexmt02_init): If the user specified a vendor of
                   4076:        EMULEX, use the normal INQUIRY CDB handling, instead of returning the
                   4077:        useless Emulex INQUIRY data.  Now return an illegal command for a
                   4078:        RESERVE CDB. 
                   4079: 
                   4080: Thu Feb 17 02:14:57 2005  Matthew Fredette  <[email protected]>
                   4081: 
                   4082:        * ic/m68k/m68k-insns.c (tme_m68k_bfffo): Fixed a bug where we were
                   4083:        using ffs(), which finds the least significant bit set, and not the
                   4084:        most significant bit set.  Now find the most significant bit set. 
                   4085: 
                   4086:        * ic/m68k/m68k-verify.c (_tme_m68k_verify_end): Added better support
                   4087:        for verifying bitfield instructions.  Don't try to verify
                   4088:        floating-point instructions. 
                   4089:        (tme_m68k_verify_end_branch): Now leave the m68k structure unchanged. 
                   4090: 
                   4091:        * machine/sun/Makefile.am: Added sun-fb.h and sun-si.c to the sources
                   4092:        list.  Added tme-sun-eeprom.pl to the distribution. 
                   4093: 
                   4094: Wed Jan 26 13:13:29 2005  Matthew Fredette  <[email protected]>
                   4095: 
                   4096:        * host/gtk/gtk-display.h: If G_ENABLE_DEBUG isn't defined, define it
                   4097:        to zero.  Some GTK installations apparently require this. 
                   4098: 
                   4099:        * host/gtk/gtk-screen.c (_tme_gtk_screen_mode_change): Allocate a
                   4100:        GdkImage with the extra scanlines needed to hold the overtranslation
                   4101:        that the automatically generated functions do. 
                   4102: 
                   4103:        * ic/isil7170.c: Include <time.h> and not <sys/types.h> to get struct
                   4104:        tm. 
                   4105: 
                   4106:        * ic/m68k/m68020.c (_tme_m68020_exception): Store the memory Z buffer. 
                   4107:        (_tme_m68020_rte): Restore the memory Z buffer. 
                   4108: 
                   4109:        * libtme/module.c (tme_module_open): Fixed a bug where were freeing
                   4110:        the tokens array twice. 
                   4111: 
                   4112:        * scsi/scsi-msg.c (tme_scsi_device_msg_identify): Now set the
                   4113:        addressed LUN. 
                   4114: 
                   4115: Sun Jan 16 01:24:37 2005  Matthew Fredette  <[email protected]>
                   4116: 
                   4117:        * ic/m68k/m68k-execute.c (_TME_M68K_EXECUTE_NAME): Added support for
                   4118:        executing floating-point general instructions. 
                   4119: 
                   4120: Fri Jan 14 12:27:41 2005  Matthew Fredette  <[email protected]>
                   4121: 
                   4122:        * dist/softfloat/processors/386-GCC.h
                   4123:          dist/softfloat/processors/SPARC-GCC.h
                   4124:          dist/softfloat/softfloat/README.txt
                   4125:          dist/softfloat/softfloat/SoftFloat-history.txt
                   4126:          dist/softfloat/softfloat/SoftFloat-source.txt
                   4127:          dist/softfloat/softfloat/SoftFloat.txt
                   4128:          dist/softfloat/softfloat/timesoftfloat.txt
                   4129:          dist/softfloat/softfloat/bits32/softfloat-macros
                   4130:          dist/softfloat/softfloat/bits32/softfloat.c
                   4131:          dist/softfloat/softfloat/bits32/timesoftfloat.c
                   4132:          dist/softfloat/softfloat/bits32/386-Win32-GCC/Makefile
                   4133:          dist/softfloat/softfloat/bits32/386-Win32-GCC/milieu.h
                   4134:          dist/softfloat/softfloat/bits32/386-Win32-GCC/softfloat-specialize
                   4135:          dist/softfloat/softfloat/bits32/386-Win32-GCC/softfloat.h
                   4136:          dist/softfloat/softfloat/bits32/SPARC-Solaris-GCC/Makefile
                   4137:          dist/softfloat/softfloat/bits32/SPARC-Solaris-GCC/milieu.h
                   4138:          dist/softfloat/softfloat/bits32/SPARC-Solaris-GCC/softfloat-specialize
                   4139:          dist/softfloat/softfloat/bits32/SPARC-Solaris-GCC/softfloat.h
                   4140:          dist/softfloat/softfloat/bits32/templates/Makefile
                   4141:          dist/softfloat/softfloat/bits32/templates/milieu.h
                   4142:          dist/softfloat/softfloat/bits32/templates/softfloat-specialize
                   4143:          dist/softfloat/softfloat/bits32/templates/softfloat.h
                   4144:          dist/softfloat/softfloat/bits64/softfloat-macros
                   4145:          dist/softfloat/softfloat/bits64/softfloat.c
                   4146:          dist/softfloat/softfloat/bits64/timesoftfloat.c
                   4147:          dist/softfloat/softfloat/bits64/386-Win32-GCC/Makefile
                   4148:          dist/softfloat/softfloat/bits64/386-Win32-GCC/milieu.h
                   4149:          dist/softfloat/softfloat/bits64/386-Win32-GCC/softfloat-specialize
                   4150:          dist/softfloat/softfloat/bits64/386-Win32-GCC/softfloat.h
                   4151:          dist/softfloat/softfloat/bits64/SPARC-Solaris-GCC/Makefile
                   4152:          dist/softfloat/softfloat/bits64/SPARC-Solaris-GCC/milieu.h
                   4153:          dist/softfloat/softfloat/bits64/SPARC-Solaris-GCC/softfloat-specialize
                   4154:          dist/softfloat/softfloat/bits64/SPARC-Solaris-GCC/softfloat.h
                   4155:          dist/softfloat/softfloat/bits64/templates/Makefile
                   4156:          dist/softfloat/softfloat/bits64/templates/milieu.h
                   4157:          dist/softfloat/softfloat/bits64/templates/softfloat-specialize
                   4158:          dist/softfloat/softfloat/bits64/templates/softfloat.h:
                   4159: 
                   4160:          Import of SoftFloat Release 2b. 
                   4161: 
                   4162:        * dist/softfloat/softfloat/bits32/softfloat.c:
                   4163:        * dist/softfloat/softfloat/bits64/softfloat.c: Added the tme/softfloat
                   4164:        glue and removed some unused variables. 
                   4165: 
                   4166: Fri Jan 14 11:44:18 2005  Matthew Fredette  <[email protected]>
                   4167: 
                   4168:        * machine/sun/tme-sun-eeprom.pl: Make selftest-#megs default to zero. 
                   4169:        * tools/tme-binary-struct.pl.in: When standard input is a terminal, we
                   4170:        don't read any input. 
                   4171: 
                   4172: Thu Aug 19 12:27:24 2004  Matthew Fredette  <[email protected]>
                   4173: 
                   4174:        * TODO: Updated. 
                   4175: 
                   4176:        * acinclude.m4 (AC_CHECK_SHIFTSIGNED): Added. 
                   4177: 
                   4178:        * configure.in: Use AC_CHECK_SHIFTSIGNED() to see if right shifts of
                   4179:        signed integrals preserve sign. 
                   4180:        Added support for sun3 systems. 
                   4181: 
                   4182:        * generic/bus-el.c (_tme_bus_intack): If a device doesn't acknowledge
                   4183:        interrupts, return any user-specified vector on the bus connection
                   4184:        before falling back to the undefined vector. 
                   4185:        (_tme_bus_connections_new): Now allow the user to specify a vector on
                   4186:        the bus connection. 
                   4187:        (tme_generic,bus): Added a hack that allows the user to specify a 4GB
                   4188:        bus on a 32-bit system. 
                   4189: 
                   4190:        * ic/Makefile.am: Now build tme_ic_isil7170.la. 
                   4191: 
                   4192:        * ic/i825x6.c (_tme_i825x6_callout_cu): Added a missing break
                   4193:        statement to a switch arm. 
                   4194: 
                   4195:        * ic/isil7170.c ic/m68k/m68020.c machine/sun/sun-bwtwo.c
                   4196:          machine/sun/sun-fb.c machine/sun/sun-fb.h machine/sun/sun-obie.c
                   4197:          machine/sun/tme-sun-eeprom.pl machine/sun3/Makefile.am
                   4198:          machine/sun3/SUN3-CARRERA machine/sun3/sun3-control.c
                   4199:          machine/sun3/sun3-impl.h machine/sun3/sun3-mainbus.c
                   4200:          machine/sun3/sun3-mmu.c tme/ic/isil7170.h
                   4201:          tools/tme-binary-struct.pl.in:
                   4202: 
                   4203:          Added. 
                   4204: 
                   4205:        * ic/m68k/Makefile.am: Removed an inadvertent m68k-verify.c from
                   4206:        tme_ic_m68k_la_SOURCES. 
                   4207: 
                   4208:        * ic/m68k/Makefile.am: Now compile m68020.c. 
                   4209: 
                   4210:        * ic/m68k/m68k-misc.c (tme_m68000_exception_process):
                   4211:        (tme_m68020_exception_process): For illegal instruction exceptions,
                   4212:        now use the line A or line F vector as appropriate. 
                   4213:        (tme_m68k_rte_start): Added some TME_M68K_SEQUENCE_RESTARTING
                   4214:        protection. 
                   4215: 
                   4216:        * libtme/threads-sjlj.c: Removed the unused
                   4217:        tme_sjlj_thread_cond_notified field from the thread structure. 
                   4218:        (tme_sjlj_thread_create): Initialize the thread's linkage in the
                   4219:        timeout list. 
                   4220: 
                   4221:        * machine/Makefile.am: Added the sun3 directory to DIST_SUBDIRS. 
                   4222: 
                   4223:        * machine/sun/Makefile.am: Now build sun-bwtwo.c, sun-fb.c, and
                   4224:        sun-obie.c for libtme_machine_sun.la. 
                   4225:        Now make the tme-sun-eeprom script. 
                   4226: 
                   4227:        * machine/sun/sun-keyboards.txt: Added a map for the type 3 keyboard. 
                   4228: 
                   4229:        * machine/sun/sun-mmu.c (tme_sun_mmu_tlb_fill): Don't invalidate the
                   4230:        old TLB entry if it happens to be the same one we're filling. 
                   4231: 
                   4232:        * tme/common.h: Now define TME_FIELD_MASK_EXTRACTU and the internal
                   4233:        _TME_FIELD_MASK_FACTOR, for extracting field values using a mask. 
                   4234: 
                   4235:        * tme/generic/bus.h: Now define TME_BUS_CYCLE_SYNCHRONOUS_EVENT.  Now
                   4236:        track a single interrupt vector for a connection, for those
                   4237:        connections that only use a single, nonprogrammable vector. 
                   4238: 
                   4239:        * tme/ic/Makefile.am: Now install isil7170.h. 
                   4240: 
                   4241:        * tme/machine/sun.h: To allow for more code sharing, now define
                   4242:        TME_SUN_Z8530_SIZE and TME_SUN_Z8530_SOCKET_INIT.  Added prototypes
                   4243:        for tme_sun_obie() and tme_sun_bwtwo(). 
                   4244: 
                   4245: Wed Aug 11 12:30:28 2004  Matthew Fredette  <[email protected]>
                   4246: 
                   4247:        * ic/m68k/m68010.c: Removed GROUPn_ from the TME_M68K_EXCEPTION_ macro
                   4248:        names, since those group numbers applied to only the 68000 and 68010. 
                   4249:        Also added the new TME_M68K_VECTOR_ macros. 
                   4250: 
                   4251:        * ic/m68k/m68k-execute.c (_TME_M68K_EXECUTE_NAME): Fixed problems with
                   4252:        the way that tracing is handled, to enable support for 68020 tracing
                   4253:        and its new trace exception frame format.  Fixed a bug in the code
                   4254:        that detects a 32-bit branch.  Fixed a bug in decoding the divul and
                   4255:        mulul extension words.  Added missing declarations for some variables
                   4256:        used in 68020 effective address calculation. 
                   4257: 
                   4258:        * ic/m68k/m68k-impl.h: Replaced TME_M68K_FLAG_T with TME_M68K_FLAG_T0
                   4259:        and TME_M68K_FLAG_T1, and use them wherever possible.  Removed the
                   4260:        GROUPn_ from the TME_M68K_EXCEPTION_ macros, since the original group
                   4261:        numbers were specific to the 68000 and 68010.  Added more exception
                   4262:        frame format identifier macros.  Added new macros for the exception
                   4263:        vectors. 
                   4264:        (TME_M68K_INSN_BRANCH):
                   4265:        (TME_M68K_INSN_CHANGE_SR): Improved tracing support. 
                   4266: 
                   4267:        * ic/m68k/m68k-insns-auto.sh: The old asr expansion (which was the
                   4268:        same as the lsr expansion, but with a signed operand and result) had
                   4269:        bugs and also required that right shifts of a signed operand be
                   4270:        arithmetic.  Added a new expansion that fixes these problems. 
                   4271:        Removed the _GROUPn from the TME_M68K_EXCEPTION_ macro names, since
                   4272:        the group numbers were specific to the 68000 and 68010.  Also added
                   4273:        the new TME_M68K_VECTOR_ macros. 
                   4274:        In the bus-cycle functions, recognize the
                   4275:        TME_BUS_CYCLE_SYNCHRONOUS_EVENT pseudo-error, and make it force the
                   4276:        executer to check external events before executing the next
                   4277:        instruction. 
                   4278: 
                   4279:        * ic/m68k/m68k-insns.c: Removed the _GROUPn from the
                   4280:        TME_M68K_EXCEPTION_ macro names, since the group numbers were specific
                   4281:        to the 68000 and 68010.  Also added the new TME_M68K_VECTOR_ macros. 
                   4282:        Where applicable, store the current PC as the last PC before setting
                   4283:        the next PC as the current PC.  This supports format 2 exception
                   4284:        frames, which stack the address of the instruction that caused the
                   4285:        exception. 
                   4286:        (tme_m68k_movec): Added support for the 68020 control registers. 
                   4287: 
                   4288:        * ic/m68k/m68k-misc-auto.sh: Create registers for the next program
                   4289:        counter, the 68020 cacr and caar, and the always-zero register. 
                   4290: 
                   4291:        * ic/m68k/m68k-misc.c: Removed the _GROUPn from the
                   4292:        TME_M68K_EXCEPTION_ macro names, since the group numbers were specific
                   4293:        to the 68000 and 68010.  Also added the new TME_M68K_VECTOR_ macros. 
                   4294:        (_tme_m68k_bus_interrupt):
                   4295:        (tme_m68k_external_check): Implement a system that prevents NMI from
                   4296:        being repeatedly accepted.  If the interrupt priority mask is already
                   4297:        seven, only accept an NMI on a transition from deasserted to asserted. 
                   4298:        (tme_m68k_new): Now set the mask of T bits used by the processor. 
                   4299:        (tme_m68k_do_reset): Now clear the E and F bits in the 68020 cacr. 
                   4300:        Fixed a bug where we loaded the initial SSP and PC from supervisor
                   4301:        data space instead of the correct supervisor program space. 
                   4302:        (tme_m68k_change_sr): Only recognize the M bit on a 68020 or greater,
                   4303:        and fixed bugs in the selection of the correct stack pointer control
                   4304:        register. 
                   4305:        (tme_m68k_exception_process): Renamed to tme_m68000_exception_process,
                   4306:        since the grouping and priority it implements are specific to the
                   4307:        68000 and 68010. 
                   4308:        (tme_m68020_exception_process): Added. 
                   4309:        (tme_m68k_bitfield_offset): Simplified the bitfield byte offset
                   4310:        calculation for negative bit offsets. 
                   4311:        (tme_m68k_bitfield_width): Don't bother masking a bitfield width that
                   4312:        was encoded in the instruction; it can't be greater than 31. 
                   4313:        (_tme_m68k_bitfield_read): If the bitfield is in memory, note that the
                   4314:        current instruction can fault.  Fixed bugs where we assumed that
                   4315:        TME_BIT(32) is zero mod 2^32, when it may be 1 because of shift
                   4316:        limiting, which would cause us to fail to mask and/or sign-extend a
                   4317:        32-bit bitfield value correctly. 
                   4318:        (tme_m68k_bitfield_write_unsigned): Fixed a bug where we wouldn't mask
                   4319:        the value we were given before setting the flags.  Fixed bugs where we
                   4320:        assumed that TME_BIT(32) is zero mod 2^32, when it may be 1 because of
                   4321:        shift limiting.  If the bitfield is in memory, note that the current
                   4322:        instruction can fault. 
                   4323: 
                   4324:        * ic/m68k/m68k-verify.c (tme_m68k_verify_mem_any): Fixed a bug where
                   4325:        we wouldn't properly verify transfers of endianless data. 
                   4326:        (tme_m68k_verify_init): Now set up a full 32-bit address space. 
                   4327:        (_tme_m68k_verify_end): Store %a7 back in its proper stack pointer
                   4328:        control register, so we can verify changes to the control registers. 
                   4329:        Ignore extra verifier memory reads on bitfield instructions; the
                   4330:        verifier bitfield implementation often reads addresses not covered by
                   4331:        the bitfield. 
                   4332: 
                   4333: Mon May 17 11:57:01 2004  Matthew Fredette  <[email protected]>
                   4334: 
                   4335:        * host/bsd/bsd-bpf.c: Added support for the "delay" option, which
                   4336:        delays all incoming packets for a user-specified number of
                   4337:        microseconds. 
                   4338:        (_tme_bsd_bpf_read): Fixed a bug where a TME_ETHERNET_READ_PEEK read
                   4339:        would discard the read packet. 
                   4340: 
                   4341: Fri May 14 00:56:19 2004  Matthew Fredette  <[email protected]>
                   4342: 
                   4343:        * host/bsd/bsd-bpf.c: Removed the unused tme_bsd_bpf_cond_writer
                   4344:        structure member. 
                   4345:        (tme_host_bsd,bpf): Fixed a bug where we weren't initializing the
                   4346:        tme_bsd_bpf_conf_reader condition. 
                   4347: 
                   4348: Tue May 11 12:03:36 2004  Matthew Fredette  <[email protected]>
                   4349: 
                   4350:        * ic/i825x6.c: Added some logging. 
                   4351:        (_tme_i825x6_callout_ru): Don't set the B bit in RFD status fields. 
                   4352: 
                   4353:        * libtme/misc.c (_tme_misc_number_parse): Some changes to silence gcc
                   4354:        -Wuninitialized. 
                   4355: 
                   4356: Tue May 04 01:17:27 2004  Matthew Fredette  <[email protected]>
                   4357: 
                   4358:        * bus/multibus/sun-mie.c:
                   4359:        * ic/i825x6.c:
                   4360:        * ic/i825x6reg.h:
                   4361:        * tme/ic/i825x6.h: Added. 
                   4362: 
                   4363:        * machine/sun2/SUN2-MULTIBUS: Added commands to create ie0. 
                   4364: 
                   4365: Fri Apr 30 12:11:36 2004  Matthew Fredette  <[email protected]>
                   4366: 
                   4367:        * bus/multibus/3c400.c bus/multibus/sun-sc.c generic/bus-el.c
                   4368:          ic/am9513.c ic/z8530.c ic/m68k/m68k-insns.c ic/m68k/m68k-misc.c
                   4369:          machine/sun2/sun2-mainbus.c tme/generic/bus.h:
                   4370: 
                   4371:          Reworked bus signals in several ways: Added the notion of the bus
                   4372:          signals set.  Every bus should support multiple device-specific bus
                   4373:          signals sets, added by elements connecting to the bus.  This enables
                   4374:          elements to pass these device-specific bus signals to each other. 
                   4375:          Now bus signals are only specified as either asserted or negated,
                   4376:          and devices almost never signal edges.  For devices that only drive
                   4377:          signals either high or low, you can exclusive-or
                   4378:          TME_BUS_SIGNAL_LEVEL_ASSERTED with either TME_BUS_SIGNAL_LEVEL_HIGH
                   4379:          or TME_BUS_SIGNAL_LEVEL_LOW as appropriate, and provide that to the
                   4380:          device such that the device only needs to exclusive-or that with the
                   4381:          signal level to get the right asserted or negated level.  Also
                   4382:          expanded the number of generic bits in a signal value, and improved
                   4383:          the set of macros used to compose and decompose signal values. 
                   4384: 
                   4385:        * bus/multibus/sun-sc.c generic/bus.c ic/m68k/m68k-misc.c
                   4386:          machine/sun/sun-mmu.c tme/generic/bus.h:
                   4387: 
                   4388:          Made changes to the TLB protocol, to better support reentrant
                   4389:          devices.  Now, a TLB entry passed to a fill function is expected to
                   4390:          be local on the stack, and it "reserves" the real, backing TLB entry
                   4391:          in the device's state.  This prevents the case where a device tries
                   4392:          to fill the same backing TLB entry at the same time in two or more
                   4393:          threads.  TLB fill functions for devices that need to invalidate
                   4394:          outstanding TLBs always invalidate the backing TLB entry.  After a
                   4395:          TLB fill has finished, the caller checks its reservation on the
                   4396:          real, backing TLB, and copies the local TLB back if the reservation
                   4397:          has not been broken.  Devices that want to use a TLB entry
                   4398:          immediately after the fill function returns must use the local TLB,
                   4399:          since it cannot have been invalidated yet.  Also made fixes to TLB
                   4400:          entry users that avoid rereading fields that are destroyed by
                   4401:          invalidation, after the device has committed to using the TLB entry,
                   4402:          since invalidation can happen at any time.  Also made the TLB
                   4403:          tme_bus_tlb_emulator_off_read member const. 
                   4404: 
                   4405:        * generic/Makefile.am:
                   4406:        * generic/bus-device.c:
                   4407:        * tme/generic/bus-device.h: Added generic bus-device support for real
                   4408:        bus interfaces and bus-mastering. 
                   4409: 
                   4410: Fri Apr 30 01:46:01 2004  Matthew Fredette  <[email protected]>
                   4411: 
                   4412:        * TODO: Updated. 
                   4413: 
                   4414:        * configure.in: Added the i825x6 to the list of ICs for the sun2. 
                   4415: 
                   4416:        * bus/multibus/Makefile.am: Now compile sun-mie.c. 
                   4417: 
                   4418:        * ic/Makefile.am: Now build tme_ic_i825x6.la. 
                   4419: 
                   4420:        * tme/common.h: Added the TME_X_VERSION versioning macros.  Simplified
                   4421:        the definition of TME_RANGES_OVERLAP. 
                   4422: 
                   4423:        * tme/generic/ethernet.h: Now define TME_ETHERNET_LENGTH_SIZE and
                   4424:        TME_ETHERNET_HEADER_SIZE. 
                   4425: 
                   4426:        * tme/ic/m68k.h: Removed the ancient tme_m68k_tlb_bus_wrlock_on_read
                   4427:        macro. 
                   4428: 
                   4429: Sun Mar 28 23:38:28 2004  Matthew Fredette  <[email protected]>
                   4430: 
                   4431:        * generic/bus-device-auto.sh: Added. 
                   4432: 
                   4433: Fri Feb 20 12:42:11 2004  Matthew Fredette  <[email protected]>
                   4434: 
                   4435:        * ic/m68k/m68k-execute.c [_TME_M68K_EXECUTE_FAST]: Make the fast
                   4436:        emulator load pointers const. 
                   4437: 
                   4438: Fri Jan 09 03:42:48 2004  Matthew Fredette  <[email protected]>
                   4439: 
                   4440:        * generic/bus-el.c ic/am9513.c ic/m68k/m68k-misc.c
                   4441:          machine/sun2/sun2-mainbus.c tme/generic/bus.h:
                   4442: 
                   4443:          Increased the possible number of signal flag bits. 
                   4444:          (TME_BUS_SIGNAL_WHICH): Renamed to TME_BUS_SIGNAL_INDEX, all callers
                   4445:          changed, and added a new macro with the same old name that simply
                   4446:          masks off the signal flag bits. 
                   4447:          (TME_BUS_SIGNAL_WHICH_INT): Renamed to TME_BUS_SIGNAL_INDEX_INT, all
                   4448:          callers changed. 
                   4449: 
                   4450:        * generic/bus.c (tme_bus_addr_parse_any): Now use
                   4451:        tme_misc_unumber_parse_any(). 
                   4452: 
                   4453:        * generic/disk.c (tme_disk_dimension_parse): Now use
                   4454:        tme_misc_unumber_parse(). 
                   4455: 
                   4456:        * generic/fb-xlat-auto.sh: No longer emit some pixel-doubling code in
                   4457:        optimized translation functions for formats for 24 or more bits per
                   4458:        pixel, because that code would expand to shifts of more than 32 bits,
                   4459:        tripping gcc -Werror. 
                   4460: 
                   4461:        * host/gtk/gtk-screen.c (_tme_gtk_gdkimage_bipp): Fixed a bug where
                   4462:        this would fail when bipp > depth, which is common on deep
                   4463:        framebuffers. 
                   4464: 
                   4465:        * libtme/misc.c (_tme_misc_number_parse):
                   4466:        (tme_misc_unumber_parse_any):
                   4467:        (tme_misc_number_parse_any):
                   4468:        (tme_misc_unumber_parse):
                   4469:        (tme_misc_number_parse): Added. 
                   4470: 
                   4471:        * tme/misc.h: Added prototypes for tme_misc_unumber_parse_any,
                   4472:        tme_misc_number_parse_any, tme_misc_unumber_parse, and
                   4473:        tme_misc_number_parse. 
                   4474: 
1.1.1.2   root     4475: Wed Oct 29 02:03:26 2003  Matthew Fredette  <[email protected].>
                   4476:  
                   4477:        * Release 0.2 out.
1.1       root     4478: 
1.1.1.2   root     4479:        * host/gtk/gtk-screen.c: Some quick changes for GTK 2 compatibility. 
1.1       root     4480: 
1.1.1.2   root     4481: Sat Oct 25 17:08:02 2003  Matthew Fredette  <[email protected]>
                   4482: 
                   4483:        * ic/am9513.c ic/mm58167.c ic/z8530.c ic/z8530reg.h
                   4484:          ic/m68k/m68k-execute.c ic/m68k/m68k-insns.c ic/m68k/m68k-iset.txt
                   4485:          ic/m68k/m68k-misc.c ic/m68k/m68k-verify.c tmesh/tmesh-cmds.c
                   4486:          tmesh/tmesh-util.c:
                   4487: 
                   4488:          RCS Id, header comment, and license sweep. 
                   4489: 
                   4490: Thu Oct 16 03:02:11 2003  Matthew Fredette  <[email protected]>
                   4491: 
                   4492:        * configure.in: Now check for size_t. 
                   4493:        Now make sure that <net/bpf.h> defines BIOCSHDRCMPLT before deciding
                   4494:        that bpf support is present. 
                   4495: 
                   4496:        * generic/bus.c generic/keyboard.c host/bsd/bsd-bpf.c
                   4497:          host/bsd/bsd-if.c host/gtk/gtk-display.h host/gtk/gtk-keyboard.c
                   4498:          host/posix/posix-tape.c ic/am9513.c ic/m68k/m68k-impl.h
                   4499:          libtme/log-prf.c machine/sun2/sun2-mmu.c scsi/scsi-cdb.c
                   4500:          scsi/scsi-tape.c serial/kb-sun.c serial/serial-kb.c
                   4501:          serial/serial-ms.c tme/generic/keyboard.h tme/scsi/scsi-device.h
                   4502:          tmesh/tmesh-cmds.c tmesh/tmesh.c:
                   4503: 
                   4504:          Fixed many small bugs caught by the gcc3 -Wall -Wuninitialized. 
                   4505: 
                   4506:        * host/posix/posix-disk.c: Fixed various type problems found by gcc3. 
                   4507: 
                   4508:        * scsi/acb4000.c (_tme_acb4000_cdb_bad): Fixed a bug where we set the
                   4509:        amount of valid sense to TRUE instead of to a byte count. 
                   4510: 
                   4511:        * scsi/scsi-bus.c (_tme_scsi_bus_cycle): Work around an aliasing
                   4512:        warning. 
                   4513: 
                   4514:        * tme/common.h: Fixed a bug where tme_value64_set had a conditional
                   4515:        with two different result types. 
                   4516:        When included by the implementation, now try to bring in standard
                   4517:        headers to get string and memory function prototypes.  Added an
                   4518:        incomplete list of prototypes for when standard headers aren't
                   4519:        available. 
                   4520: 
                   4521: Mon Sep 29 11:42:56 2003  Matthew Fredette  <[email protected]>
                   4522: 
                   4523:        * generic/fb-xlat-auto.sh: Added many comments, clarified some obscure
                   4524:        code, and fixed a bug where unoptimized halving translators wouldn't
                   4525:        shift the source FIFOs by two pixels when they had to. 
                   4526: 
                   4527: Wed Sep 10 01:49:22 2003  Matthew Fredette  <[email protected]>
                   4528: 
                   4529:        * generic/fb-xlat-auto.sh: Fixed various bugs when the destination
                   4530:        FIFOs may not be aligned, and when doubling.  These bugs were mostly
                   4531:        found by inspection, and the fixes haven't been tested. 
                   4532: 
                   4533: Mon Sep 01 14:58:57 2003  Matthew Fredette  <[email protected]>
                   4534: 
                   4535:        * configure.in: Changed the version number. 
                   4536:        Now only build the bsd host modules on BSD-like systems. 
                   4537: 
                   4538:        * generic/keyboard.c (_tme_keyboard_buffer_in0): Now examine any
                   4539:        keycode on the user's event to determine if an earlier press of a
                   4540:        different keysym from the same keycode has actually released. 
                   4541: 
                   4542:        * host/gtk/gtk-display.h: Now keep a mapping from keysym to keycode,
                   4543:        for those keysyms that can only be generated by one keycode. 
                   4544: 
                   4545:        * host/gtk/gtk-keyboard.c (_tme_gtk_keyboard_x11_new):
                   4546:        (_tme_gtk_keyboard_key_event):
                   4547:        (_tme_gtk_keyboard_new): Now keep a mapping from keysym to keycode,
                   4548:        for those keysyms that can only be generated by one keycode, and add
                   4549:        that keycode to key events. 
                   4550: 
                   4551:        * host/posix/posix-tape.c: Some changes to silence gcc
                   4552:        -Wuninitialized. 
                   4553: 
                   4554:        * host/posix/posix-tape.c (_tme_posix_tape_xfer1): When we hit the end
                   4555:        of the media, don't try to skip ahead to a nonexistent next segment. 
                   4556: 
                   4557:        * libtme/hash.c (_tme_hash_lookup_internal): When the lookup succeeds,
                   4558:        be sure to return the handle the bucket. 
                   4559: 
                   4560:        * libtme/log.c: Fixed many of the non-stdarg declarations of the
                   4561:        variable-argument functions. 
                   4562: 
                   4563:        * machine/sun2/SUN2-MULTIBUS: Now set a fixed key rate on kbd0, to
                   4564:        work around a bug in NetBSD where only the first of simultaneously
                   4565:        received keycodes will be processed. 
                   4566: 
                   4567:        * serial/serial-kb.c (_tme_serial_kb_callout): Cleaned up the code
                   4568:        that translates keyboard events into serial data, and added support
                   4569:        for rate-limiting. 
                   4570:        (_tme_serial_kb_th_rate): Added. 
                   4571:        (_tme_serial_kb_serial_read):
                   4572:        ((tme_serial_,kb,keyboard): Added support for rate-limiting. 
                   4573: 
                   4574:        * serial/serial-kb.h: Added various members to control rate-limiting. 
                   4575: 
                   4576:        * tme/generic/keyboard.h: A keyboard event for a keysym can now
                   4577:        include the related keycode.  This is for handling the case of a key
                   4578:        release giving a different keysym than the key press did because
                   4579:        modifiers changed in between. 
                   4580: 
                   4581: Sat Aug 23 13:50:34 2003  Matthew Fredette  <[email protected]>
                   4582: 
                   4583:        * generic/Makefile.am: Be sure to distribute fb-xlat-auto.sh. 
                   4584:        * generic/keyboard.c (_tme_keyboard_debug):
                   4585:        (tme_keyboard_buffer_new): Changes to support logging debug messages. 
                   4586: 
                   4587:        * host/gtk/Makefile.am:
                   4588:        * serial/Makefile.am:
                   4589:        * tme/generic/Makefile.am: Added some headers that weren't getting
                   4590:        distributed. 
                   4591: 
                   4592:        * host/gtk/gtk-keyboard.c (_tme_gtk_keyboard_new): Allow the keyboard
                   4593:        buffer to log messages using our log handle. 
                   4594: 
                   4595:        * host/posix/posix-tape.c: Changes to silence various gcc warnings. 
                   4596: 
                   4597:        * libtme/module.c: Added a hack to support older installed libltdls
                   4598:        that don't define lt_ptr. 
                   4599: 
                   4600:        * libtme/threads-sjlj.c: Fixed uses of struct fd_set. 
                   4601: 
                   4602:        * tme/common.h: Now include <netinet/in.h> for the byteswapping
                   4603:        functions. 
                   4604: 
                   4605:        * tme/generic/keyboard.h: Users can now give a log handle to the
                   4606:        keyboard buffer, for logging debug messages. 
                   4607: 
                   4608: Fri Aug 22 16:39:30 2003  Matthew Fredette  <[email protected]>
                   4609: 
                   4610:        * serial/serial-kb.c (tme_serial_,kb,keyboard): Give the element's log
                   4611:        handle to the keyboard buffer, to enable debugging. 
                   4612: 
                   4613: Tue Aug 12 23:00:40 2003  Matthew Fredette  <[email protected]>
                   4614: 
                   4615:        * machine/sun/Makefile.am: Now install sun-keyboards.txt and
                   4616:        my-sun-macros.txt. 
                   4617: 
                   4618:        * machine/sun/my-sun-macros.txt:
                   4619:        * machine/sun/sun-keyboards.txt: Added. 
                   4620: 
                   4621:        * machine/sun2/Makefile.am: Removed some old targets and dependencies. 
                   4622: 
                   4623:        * machine/sun2/SUN2-MULTIBUS: Reorganized and added more comments. 
                   4624:        As-is, this now represents the common case of local disk, no network. 
                   4625: 
                   4626: Fri Aug 08 13:33:45 2003  Matthew Fredette  <[email protected]>
                   4627: 
                   4628:        * tmesh/tmesh.c (main): Added support for the --noninteractive option. 
                   4629:        Fixed a bug where we wouldn't report meaningful file and line number
                   4630:        information on early errors. 
                   4631: 
                   4632: Thu Aug 07 22:14:46 2003  Matthew Fredette  <[email protected]>
                   4633: 
                   4634:        * bus/multibus/sun-sc.c (_tme_sun_sc_bus_cycle_data_reg): Added. 
                   4635:        (_tme_sun_sc_bus_cycle_data):
                   4636:        (_tme_sun_sc_bus_cycle_cmd_stat): Now use
                   4637:        _tme_sun_sc_bus_cycle_data_reg to run the bus cycle. 
                   4638:        (_tme_sun_sc_tlb_fill): The data register can't allow fast reading. 
                   4639: 
                   4640:        * host/posix/posix-disk.c (_tme_posix_disk_buffer_get): Now honor a
                   4641:        device's block size. 
                   4642:        (tme_host_posix,disk): If the disk image is a character device, see if
                   4643:        it has a minimum block size. 
                   4644: 
                   4645:        * host/posix/posix-tape.c (__tme_posix_tape_command): Fixed a bug
                   4646:        where an error return value wouldn't get returned.  Fixed a bug where
                   4647:        a LOAD control would get called out even when an error occured during
                   4648:        loading. 
                   4649: 
                   4650:        * scsi/emulexmt02.c: Replaced blocksize with block_size for
                   4651:        consistency. 
                   4652:        (_tme_emulexmt02_cdb_block_limits): Added. 
                   4653:        (tme_scsi,tape): Now handle the BLOCK LIMITS command. 
                   4654: 
                   4655:        * scsi/scsi-cdb.c (tme_scsi_device_cdb_illegal): Added. 
                   4656:        (_tme_scsi_device_make_inquiry_string): Added. 
                   4657:        (tme_scsi_device_make_inquiry_data): Added. 
                   4658:        (tme_scsi_device_cdb_inquiry): Removed. 
                   4659: 
                   4660:        * scsi/scsi-device.c (tme_scsi_device_address_lun_aware): Always allow
                   4661:        an INQUIRY command, even for a LUN that isn't defined. 
                   4662:        (tme_scsi_device_new): Set a NULL handler for the INQUIRY command by
                   4663:        default. 
                   4664: 
                   4665:        * scsi/scsi-disk.c: Renamed the tme-scsi-2 disk type to tme-scsi-1, to
                   4666:        reflect that it's a SCSI-1 disk. 
                   4667:        (tme_scsi_disk_cdb_inquiry): Added. 
                   4668:        (tme_scsi_disk_cdb_mode_sense):
                   4669:        (tme_scsi_disk_cdb_start_stop):
                   4670:        (tme_scsi_disk_cdb_prevent_allow):
                   4671:        (tme_scsi_disk_cdb_read_capacity): Crudely implemented these commands. 
                   4672:        (tme_scsi_disk_cdb_read1):
                   4673:        (tme_scsi_disk_cdb_write1): Implemented these commands. 
                   4674:        (_tme_scsi_disk_control): Made public. 
                   4675:        (_tme_scsi_disk_connection_break): Made public. 
                   4676:        (_tme_scsi_disk_connection_make): Made public. 
                   4677:        (_tme_scsi_disk_connections_new): Made public. 
                   4678:        (tme_scsi,disk): Install the disk handler for the INQUIRY command. 
                   4679: 
                   4680:        * scsi/scsi-tape.c (tme_scsi_tape_cdb_inquiry): Added. 
                   4681:        (tme_scsi_tape_cdb_load_unload):
                   4682:        ((tme_scsi_tape_cdb_prevent_allow): Made these command handlers do
                   4683:        nothing, for now. 
                   4684:        (tme_scsi,tape): Install the tape handler for the INQUIRY command. 
                   4685: 
                   4686:        * tme/generic/disk.h: Define some disk controls. 
                   4687: 
                   4688:        * tme/scsi/scsi-cdb.h: Define various macros, types, and prototypes
                   4689:        for generating INQUIRY response data. 
                   4690: 
                   4691:        * tme/scsi/scsi-disk.h: Added some prototypes for some now-public
                   4692:        functions. 
                   4693: 
                   4694:        * tme/scsi/scsi-tape.h: Added a prototype for
                   4695:        tme_scsi_tape_cdb_inquiry. 
                   4696: 
                   4697: Tue Aug 05 03:41:31 2003  Matthew Fredette  <[email protected]>
                   4698: 
                   4699:        * bus/multibus/sun-sc.c (_tme_sun_sc_scsi_cycle): If we're not
                   4700:        starting DMA, be sure to call out a wait-change cycle instead,
                   4701:        otherwise we can miss SCSI bus transitions. 
                   4702: 
                   4703:        * generic/Makefile.am: Now compile tape.c
                   4704: 
                   4705:        * generic/tape.c host/posix/posix-tape.c scsi/emulexmt02.c
                   4706:          scsi/scsi-tape.c tme/generic/tape.h tme/scsi/scsi-tape.h:
                   4707: 
                   4708:          Added. 
                   4709: 
                   4710:        * host/posix/Makefile.am: Now compile posix-tape.c. 
                   4711: 
                   4712:        * ic/z8530.c (_tme_z8530_bus_cycle): Added support for the WR0 reset
                   4713:        Rx interrupt command. 
                   4714: 
                   4715:        * ic/m68k/m68k-impl.h: Now always declare tme_m68k_verify_hook. 
                   4716: 
                   4717:        * ic/m68k/m68k-insns-auto.sh: Fixed a bug in the V bit calculation in
                   4718:        the asl insns. 
                   4719: 
                   4720:        * ic/m68k/m68k-misc.c (tme_m68k_verify_hook): Now always compile this
                   4721:        function. 
                   4722: 
                   4723:        * ic/m68k/m68k-verify.c (_tme_m68k_verify_end): Ignore the T bits when
                   4724:        verifying %sr. 
                   4725: 
                   4726:        * machine/sun2/SUN2-MULTIBUS: Updated. 
                   4727: 
                   4728:        * scsi/Makefile.am: Now compile emulexmt02.c and scsi-tape.c. 
                   4729: 
                   4730:        * scsi/acb4000.c (_tme_acb4000_address_lun): When marking a
                   4731:        nonextended sense as valid we now have to indicate how many bytes it
                   4732:        contains. 
                   4733: 
                   4734:        * scsi/acb4000.c:
                   4735:        * tme/scsi/scsi-device.h: Fixed a comment. 
                   4736: 
                   4737:        * scsi/scsi-bus.c (_tme_scsi_bus_cycle): Now be more universal about
                   4738:        remembering the last SCSI bus state we called out to each connection,
                   4739:        and call out whenever that state changes and the connection wants a
                   4740:        callout.  When a connection gives us an empty DMA sequence, instead of
                   4741:        aborting just immediately call out.  When a connection is in a DMA
                   4742:        sequence and the bus gets reset, try to reset on behalf of the
                   4743:        connection. 
                   4744: 
                   4745:        * scsi/scsi-cdb.c (tme_scsi_device_cdb_request_sense): Now require
                   4746:        that the valid marker for nonextended senses give the length of the
                   4747:        sense. 
                   4748: 
                   4749:        * scsi/scsi-device.c (tme_scsi_device_target_phase): Now log up to 128
                   4750:        bytes of output in various phases. 
                   4751:        (_tme_scsi_device_cycle): Now log short transfers. 
                   4752:        (tme_scsi_device_target_dsmf): Fixed a comment. 
                   4753: 
                   4754:        * scsi/scsi-disk.c (_tme_scsi_disk_connections_new): Fixed a usage
                   4755:        string. 
                   4756:        (tme_disk,new): Fixed a comment. 
                   4757: 
                   4758:        * serial/ms-mssystems.c: Removed the 3-byte packet support, since it's
                   4759:        apparently only found on the Tadpole SPARCbooks. 
                   4760: 
                   4761:        * serial/serial-ms.c (_tme_serial_ms_serial_config): Now store the
                   4762:        peer's serial configuration. 
                   4763: 
                   4764:        * serial/serial-ms.h: Now store the peer's serial configuration. 
                   4765: 
                   4766:        * tme/connection.h: Now define TME_CONNECTION_TAPE. 
                   4767: 
                   4768:        * tme/generic/Makefile.am: Now install tape.h. 
                   4769: 
                   4770:        * tme/scsi/Makefile.am: Now install scsi-tape.h. 
                   4771: 
                   4772: Thu Jul 31 19:03:16 2003  Matthew Fredette  <[email protected]>
                   4773: 
                   4774:        * scsi/scsi-bus.c (_tme_scsi_bus_cycle): Fixed some uses of dma_in to
                   4775:        dma; caught by gcc -Wuninitialized. 
                   4776: 
                   4777:        * tmesh/tmesh-cmds.c (_tmesh_command_log): Wrapped some otherwise
                   4778:        unused declarations in !TME_NO_LOG. 
                   4779: 
                   4780: Thu Jul 31 01:47:46 2003  Matthew Fredette  <[email protected]>
                   4781: 
                   4782:        * generic/Makefile.am: Now compile mouse.c. 
                   4783: 
                   4784:        * generic/fb.c (tme_fb_xlat_best): Fixed a bug where we wouldn't
                   4785:        reject translation functions that don't match the question. 
                   4786: 
                   4787:        * generic/keyboard.c: Fixed a comment. 
                   4788: 
                   4789:        * generic/mouse.c host/gtk/gtk-mouse.c serial/ms-mssystems.c
                   4790:          serial/serial-ms.c serial/serial-ms.h tme/generic/mouse.h:
                   4791: 
                   4792:          Added. 
                   4793: 
                   4794:        * host/gtk/Makefile.am: Now compile gtk-mouse.c. 
                   4795: 
                   4796:        * host/gtk/gtk-display.c:
                   4797:        * host/gtk/gtk-display.h:
                   4798:        * host/gtk/gtk-keyboard.c: Many changes to add mouse support. 
                   4799: 
                   4800:        * host/gtk/gtk-screen.c: Many changes to improve the user interface. 
                   4801:        Now include a menu for changing the scaling factor.  Fixed bugs with
                   4802:        respect to event masks, mostly by adding an event box. 
                   4803: 
                   4804:        * ic/z8530.c (_tme_z8530_callout): Fixed a bug that caused us to never
                   4805:        check the callouts on channel B. 
                   4806: 
                   4807:        * ic/m68k/m68k-insns.c (tme_m68k_reset): Added a crude implementation
                   4808:        of the reset instruction. 
                   4809: 
                   4810:        * machine/sun2/SUN2-MULTIBUS: Updated. 
                   4811: 
                   4812:        * machine/sun2/sun2-mainbus.c (_tme_sun2_bus_signal): Instead of
                   4813:        aborting, just ignore the RESET signal from the CPU for now. 
                   4814: 
                   4815:        * serial/Makefile.am: Now compile serial-ms.c and ms-mssystems.c. 
                   4816: 
                   4817:        * tme/connection.h: Now define TME_CONNECTION_MOUSE. 
                   4818: 
                   4819: Tue Jul 29 18:33:14 2003  Matthew Fredette  <[email protected]>
                   4820: 
                   4821:        * Makefile.am:
                   4822:        * tme/Makefile.am: Added scsi to SUBDIRS. 
                   4823: 
                   4824:        * configure.in: If long on the target is 64-bits, use it as our 64-bit
                   4825:        type.  Substitute the scsi Makefiles. 
                   4826: 
                   4827:        * bus/multibus/3c400.c (TME_3C400_CSR_PUT_3c400): Corrected a
                   4828:        tme_betoh_u16 into a tme_htobe_u16. 
                   4829: 
                   4830:        * bus/multibus/Makefile.am: Now compile sun-sc.c. 
                   4831: 
                   4832:        * bus/multibus/sun-sc.c generic/disk.c generic/scsi.c
                   4833:          host/posix/posix-disk.c scsi/Makefile.am scsi/acb4000.c
                   4834:          scsi/disk-tme.c scsi/scsi-bus.c scsi/scsi-cdb.c scsi/scsi-device.c
                   4835:          scsi/scsi-disk.c scsi/scsi-msg.c tme/generic/disk.h
                   4836:          tme/generic/scsi.h tme/scsi/Makefile.am tme/scsi/scsi-cdb.h
                   4837:          tme/scsi/scsi-device.h tme/scsi/scsi-disk.h tme/scsi/scsi-msg.h:
                   4838: 
                   4839:          Added. 
                   4840: 
                   4841:        * generic/Makefile.am: Now compile disk.c and scsi.c. 
                   4842: 
                   4843:        * generic/bus-device.c:
                   4844:        * generic/bus-el.c: Fixed a comment. 
                   4845: 
                   4846:        * host/posix/Makefile.am: Now compile posix-disk.c. 
                   4847: 
                   4848:        * host/posix/posix-memory.c:
                   4849:        * host/posix/posix-serial.c: Fixed comments. 
                   4850: 
                   4851:        * ic/mm58167.c: Fixed many significant problems with this emulation,
                   4852:        most notably that the size of the chip was not calculated correctly at
                   4853:        all.  We now report with microsecond resolution, since SunOS's probe
                   4854:        routine requires this. 
                   4855: 
                   4856:        * ic/z8530.c (_tme_z8530_intack): Simplified and fixed bugs in how
                   4857:        variable interrupt vectors are computed.  For now, since there's no
                   4858:        emulation of the IEI pin, we just behave as if it's always tied low,
                   4859:        so we never put any vector on the bus during a hard interrupt
                   4860:        acknowledge. 
                   4861:        (_tme_z8530_bus_cycle): Now ignore all WR0 CRC reset commands.  Now
                   4862:        support the WR0 transmitter reset command.  Now support reads of RR10
                   4863:        and RR14. 
                   4864: 
                   4865:        * ic/m68k/m68k-insns-auto.sh: The movem instructions cannot fault when
                   4866:        the register mask is zero.  Now that we generally have a 64-bit type
                   4867:        available, fixed various bugs in the 64-bit multiply and divide
                   4868:        instructions. 
                   4869: 
                   4870:        * ic/m68k/m68k-insns.c (tme_m68k_movec): Now appropriately mask values
                   4871:        loaded into control registers.  movec only has a long version, and
                   4872:        SunOS on the Sun-2 doesn't necessarily clear the remainder of the data
                   4873:        register it uses to load %sfc and %dfc. 
                   4874: 
                   4875:        * ic/m68k/m68k-misc.c (tme_m68k_exception_process_start): Fixed a bug
                   4876:        where the T bits weren't cleared.  This bug was found by SunOS on the
                   4877:        sun2, which starts at least init in usermode with tracing enabled. 
                   4878: 
                   4879:        * ic/m68k/m68k-verify.c (tme_m68k_verify_init): Now assume that the
                   4880:        CPU generates 28-bit addresses.  SunOS 3 on the Sun-2 does this. 
                   4881: 
                   4882:        * machine/sun/tme-sun-idprom.pl: Added support for the obscure
                   4883:        Roadrunner-MB1. 
                   4884: 
                   4885:        * machine/sun2/sun2-bwtwo.c: Fixed various comments. 
                   4886:        Because SunOS's probe routine fails otherwise, added support for the
                   4887:        entire 2KB page starting at the CSR to appear undecoded, i.e., to look
                   4888:        like the CSR repeated 1024 times. 
                   4889: 
                   4890:        * machine/sun2/sun2-impl.h: Now define TME_SUN2_DVMA_SIZE_MBMEM and
                   4891:        TME_SUN2_DVMA_SIZE_VME. 
                   4892:        Now make struct tme_sun2_bus_connection public, since the bus DVMA TLB
                   4893:        filler needs to know which bus it's filling for. 
                   4894: 
                   4895:        * machine/sun2/sun2-mainbus.c (_tme_sun2_connections_new): When making
                   4896:        the connections for the mbmem or vme buses, be sure to set the last
                   4897:        address that we decode on the bus, for DVMA purposes. 
                   4898: 
                   4899:        * machine/sun2/sun2-mmu.c (_tme_sun2_bus_tlb_fill): Fixed many bugs
                   4900:        involving filling TLB entries for bus's DVMA regions. 
                   4901:        (_tme_sun2_mmu_pte_set): Added a missing protection. 
                   4902: 
                   4903:        * tme/common.h: Added some crude support for 64-bit math, even for
                   4904:        compilers that offer no 64-bit type at all. 
                   4905: 
                   4906:        * tme/connection.h: Now define TME_CONNECTION_SCSI and
                   4907:        TME_CONNECTION_DISK. 
                   4908: 
                   4909:        * tme/generic/Makefile.am: Added more headers. 
                   4910: 
                   4911:        * tme/generic/bus-device.h: Corrected a comment. 
                   4912: 
                   4913:        * tme/generic/ic.h: Corrected the 64-bit support. 
                   4914: 
                   4915:        * tmesh/tmesh-cmds.c (_tmesh_command_log): Added. 
                   4916: 
                   4917:        * tmesh/tmesh-impl.h: Now define TMESH_COMMAND_LOG. 
                   4918: 
                   4919:        * tmesh/tmesh-input.y: Added support for parsing the `log' command. 
                   4920: 
                   4921: Tue Jul 22 18:30:31 2003  Matthew Fredette  <[email protected]>
                   4922: 
                   4923:        * generic/fb-xlat-auto.sh: Changes to silence gcc -Wuninitialized. 
                   4924:        * host/gtk/gtk-keyboard.c (_tme_gtk_keyboard_lookup): Changes to
                   4925:        silence gcc -Wuninitialized. 
                   4926: 
                   4927:        * libtme/module.c (tme_module_open): Changes to silence gcc
                   4928:        -Wuninitialized. 
                   4929: 
                   4930:        * libtme/threads-sjlj.c (tme_sjlj_dispatch): Declared some locals
                   4931:        volatile to silence gcc's setjmp-related warning. 
                   4932: 
                   4933: Fri Jun 27 21:30:37 2003  Matthew Fredette  <[email protected]>
                   4934: 
                   4935:        * Makefile.am: Added the serial directory to SUBDIRS. 
                   4936:        * configure.in: Many changes to support framebuffer emulation and X11
                   4937:        and gtk elements.  Also added some serial elements support. 
                   4938: 
                   4939:        * generic/Makefile.am: Now create fb-xlat-auto.c and build fb.c and
                   4940:        keyboard.c. 
                   4941: 
                   4942:        * generic/bus-device.c:
                   4943:        * generic/bus-el.c:
                   4944:        * generic/bus.c: Although I hate doing this, various changes to
                   4945:        support a single bus connection connecting to a bus region sparsely. 
                   4946: 
                   4947:        * generic/fb-xlat-auto.sh: Now declare src_bypb to include one more
                   4948:        extra line of data, to make a total of two. 
                   4949:        Fixed a bug where translating and halving would really translate every
                   4950:        line twice.  Now when we reach the end of a line we skip the next
                   4951:        line, to move to the next pair of lines. 
                   4952: 
                   4953:        * generic/fb.c generic/keyboard.c host/gtk/Makefile.am
                   4954:          host/gtk/gtk-display.c host/gtk/gtk-display.h
                   4955:          host/gtk/gtk-keyboard.c host/gtk/gtk-screen.c libtme/hash.c
                   4956:          machine/sun2/sun2-bwtwo.c serial/Makefile.am serial/kb-sun.c
                   4957:          serial/serial-kb.c serial/serial-kb.h tme/hash.h tme/misc.h
                   4958:          tme/generic/fb.h tme/generic/keyboard.h:
                   4959: 
                   4960:          Added. 
                   4961: 
                   4962:        * generic/keyboard.c: Disabled debug output. 
                   4963: 
                   4964:        * host/Makefile.am: Added gtk to DIST_SUBDIRS. 
                   4965: 
                   4966:        * ic/am9513.c (_tme_am9513_th_timer): Removed a newline from a log
                   4967:        statement. 
                   4968: 
                   4969:        * ic/z8530.c (_tme_z8530_channel_reset): Fixed an incorrect reset
                   4970:        value for RR3. 
                   4971:        (_tme_z8530_config): Simply ignore a peer's request to change the
                   4972:        serial configuration. 
                   4973: 
                   4974:        * ic/m68k/m68k-execute.c: To fix a problem where m68k execution could
                   4975:        possibly never yield (by oscillating back and forth between fast and
                   4976:        slow execution, for example) we make sure that we never run more than
                   4977:        _tme_m68k_instruction_burst before checking for external interrupts
                   4978:        and yielding. 
                   4979: 
                   4980:        * ic/m68k/m68k-impl.h: Now in addition to _tme_m68k_instruction_burst,
                   4981:        the maximum burst length, there is
                   4982:        _tme_m68k_instruction_burst_remaining, which is the maximum number of
                   4983:        instructions remaining in the current burst. 
                   4984: 
                   4985:        * ic/m68k/m68k-iset-expand.pl:
                   4986:        * ic/m68k/m68k-opmap-make.pl: Made the RCS keywords, copyright and
                   4987:        license like other files. 
                   4988: 
                   4989:        * ic/m68k/m68k-misc.c (tme_m68k_new): Now initialize the new
                   4990:        _tme_m68k_instruction_burst_remaining struct member. 
                   4991: 
                   4992:        * libtme/Makefile.am: Now compile hash.c, and use the GTK CFLAGS. 
                   4993: 
                   4994:        * libtme/misc.c (tme_misc_tokenize):
                   4995:        (tme_free_string_array): Added. 
                   4996: 
                   4997:        * libtme/module.c (tme_module_open): Now use tme_misc_tokenize to
                   4998:        tokenize. 
                   4999: 
                   5000:        * libtme/threads-sjlj.c: Although I hate doing this, many changes to
                   5001:        support using the GTK event loop. 
                   5002: 
                   5003:        * machine/sun2/Makefile.am: Now build sun2-bwtwo.c. 
                   5004: 
                   5005:        * machine/sun2/SUN2-MULTIBUS: Added commands to create a real physical
                   5006:        console. 
                   5007: 
                   5008:        * machine/sun2/sun2-mainbus.c (_tme_sun2_bus_intack): Now acknowledge
                   5009:        interrupts on the obmem bus too, since the bwtwo z8530s are there. 
                   5010: 
                   5011:        * tme/Makefile.am: Now install misc.h and hash.h. 
                   5012: 
                   5013:        * tme/common.h: Now define tme_letoh_u16() and tme_letoh_u32(x). 
                   5014:        Declare tme_free_string_array(). 
                   5015: 
                   5016:        * tme/connection.h: Add connection types for keyboards and
                   5017:        framebuffers. 
                   5018: 
                   5019:        * tme/threads.h: Under _TME_HAVE_GTK, declare tme_threads_gtk_init. 
                   5020: 
                   5021:        * tme/tme.h: Now include <tme/hash.h> and <tme/misc.h>. 
                   5022: 
                   5023:        * tme/generic/Makefile.am: Now install fb.h and keyboard.h. 
                   5024: 
                   5025:        * tme/generic/bus-device.h:
                   5026:        * tme/generic/bus.h: Changes to support a single bus connection
                   5027:        connecting to a bus region sparsely. 
                   5028: 
                   5029:        * tmesh/Makefile.am: Now link with the GTK libraries. 
                   5030: 
                   5031: Fri Jun 27 01:37:57 2003  Matthew Fredette  <[email protected]>
                   5032: 
                   5033:        * generic/fb-xlat-auto.sh: Added. 
                   5034: 
                   5035: Thu Jun 26 13:16:12 2003  Matthew Fredette  <[email protected]>
                   5036: 
                   5037:        * tme/generic/ic.h: Fixed grammar in a comment. 
                   5038: 
                   5039: Sun May 18 02:40:56 2003  Matthew Fredette  <[email protected]>
                   5040: 
                   5041:        * configure.in: Changed the version number to 0.0; this is very alpha. 
                   5042:        There are now fewer include directories under tme/; many unnecessary
                   5043:        headers that belonged to modules were removed. 
                   5044: 
                   5045:        * bus/multibus/3c400.c: No longer include <tme/bus/multibus/3c400.h>. 
                   5046: 
                   5047:        * bus/multibus/Makefile.am generic/Makefile.am host/bsd/Makefile.am
                   5048:          host/posix/Makefile.am ic/Makefile.am ic/m68k/Makefile.am
                   5049:          libtme/Makefile.am machine/sun/Makefile.am machine/sun2/Makefile.am
                   5050:          tmesh/Makefile.am:
                   5051: 
                   5052:          Added library and module versioning. 
                   5053: 
                   5054:        * host/bsd/bsd-bpf.c:
                   5055:        * host/bsd/bsd-if.c: Now include "bsd-impl.h" instead of
                   5056:        <tme/host/bsd.h>. 
                   5057: 
                   5058:        * host/bsd/bsd-impl.h:
                   5059:        * machine/sun/tme-sun-idprom.pl: Added. 
                   5060: 
                   5061:        * machine/sun2/SUN2-MULTIBUS: Changed the extension on the PROM and
                   5062:        IDPROM files from .dat to .bin. 
                   5063: 
                   5064:        * machine/sun2/SUN2-MULTIBUS: Changed the name of the PROM filename to
                   5065:        match the documentation. 
                   5066: 
                   5067:        * tme/Makefile.am: Removed the host and bus include directories; they
                   5068:        don't exist anymore. 
                   5069: 
                   5070: Sat May 17 20:34:07 2003  Matthew Fredette  <[email protected]>
                   5071: 
                   5072:        * acinclude.m4: Added an RCS Id and a short comment. 
                   5073:        * configure.in: Added an RCS Id, the copyright, and license.  Do a
                   5074:        real path search for perl. 
                   5075: 
                   5076:        * libtme/log-prf.c:
                   5077:        * libtme/module.c:
                   5078:        * machine/sun2/sun2-mainbus.c: Changes to silence gcc -Wuninitialized. 
1.1       root     5079: 
                   5080: Fri May 16 21:48:16 2003  Matthew Fredette  <[email protected]>
                   5081: 
1.1.1.2   root     5082:        * Makefile.am TODO acconfig.h configure.in modules bus/Makefile.am
                   5083:          bus/multibus/3c400.c bus/multibus/Makefile.am generic/Makefile.am
                   5084:          generic/bus-device.c generic/bus-el.c generic/bus.c
                   5085:          host/bsd/Makefile.am host/bsd/bsd-bpf.c host/posix/Makefile.am
                   5086:          host/posix/posix-memory.c host/posix/posix-serial.c ic/Makefile.am
                   5087:          ic/am9513.c ic/mm58167.c ic/z8530.c ic/m68k/Makefile.am
                   5088:          ic/m68k/m68010.c ic/m68k/m68k-impl.h ic/m68k/m68k-insns-auto.sh
                   5089:          ic/m68k/m68k-misc.c libtme/Makefile.am libtme/alloc.c
                   5090:          libtme/element.c libtme/log-prf.c libtme/log.c libtme/misc.c
                   5091:          libtme/module.c libtme/threads-sjlj.c machine/Makefile.am
                   5092:          machine/sun/Makefile.am machine/sun/sun-mmu.c
                   5093:          machine/sun2/Makefile.am machine/sun2/SUN2-MULTIBUS
                   5094:          machine/sun2/sun2-impl.h machine/sun2/sun2-mainbus.c
                   5095:          machine/sun2/sun2-mmu.c tme/Makefile.am tme/common.h
                   5096:          tme/connection.h tme/element.h tme/log.h tme/module.h tme/tme.h
                   5097:          tme/tmesh.h tme/generic/bus-device.h tme/generic/bus.h
                   5098:          tme/ic/am9513.h tme/ic/m68k.h tme/ic/mm58167.h tme/ic/z8530.h
                   5099:          tmesh/Makefile.am tmesh/tmesh-cmds.c tmesh/tmesh-impl.h
                   5100:          tmesh/tmesh-input.y tmesh/tmesh-util.c tmesh/tmesh.c:
                   5101: 
                   5102:          By far, this is the worst bulk commit I've ever done.  Many changes
                   5103:          to simplify the element interface as much as possible, to do modules
                   5104:          better, and to do logging better.  Fixed a small number of actual
                   5105:          bugs.  Also converted to modern autoconf and automake, because the
                   5106:          module support requires modern libtool.  Also added the main libtme,
                   5107:          libtmesh, and tmesh itself. 
                   5108: 
                   5109:        * ic/m68k/m68k-verify.c: Now include <stdio.h>. 
1.1       root     5110: 
                   5111: Fri May 16 17:50:17 2003  Matthew Fredette  <[email protected]>
                   5112: 
1.1.1.2   root     5113:        * acinclude.m4 (AC_CHECK_ALIGNOF): Now takes only a size, in bits, to
                   5114:        check the alignment for.  Before, it used to take a string of the form
                   5115:        intN_t, which wouldn't work on systems that don't define an intN_t
                   5116:        type.  When cross-compiling, assume the target requires alignment
                   5117:        equal to the size.  Now use AC_DEFINE_UNQUOTED's third argument to
                   5118:        specify the config.h.in comment. 
                   5119:        (AC_CHECK_SHIFTMAX): Added. 
                   5120:        (AC_SYS_SOCKADDR_SA_LEN): Now use AC_DEFINE_UNQUOTED's third argument
                   5121:        to specify the config.h.in comment. 
1.1       root     5122: 
                   5123: Thu May 15 15:52:08 2003  Matthew Fredette  <[email protected]>
                   5124: 
1.1.1.2   root     5125:        * ic/m68k/m68k-insns-auto.sh: Fixed bugs in the shift and rotate
                   5126:        insns, where we might try to shift by an amount greater than the
                   5127:        maximum meaningful shift for a given size. 
                   5128: 
                   5129: Sat May 10 15:41:23 2003  Matthew Fredette  <[email protected]>
                   5130: 
                   5131:        * acinclude.m4 (AC_CHECK_ALIGNOF): Fixed a bug where this would stop
                   5132:        on the first misalignment, instead of continuing to find the true
                   5133:        minimum alignment.  For example, this would have found the minimum
                   5134:        32-bit alignment to be 4 instead of 2 on a 68000 or 68010, stopping on
                   5135:        the misaligned address 3. 
                   5136: 
                   5137:        * configure.in ic/Makefile.am ic/m68k/Makefile.am machine/Makefile.am
                   5138:          machine/sun2/Makefile.am tme/Makefile.am:
                   5139: 
                   5140:          Some early distribution work. 
                   5141: 
                   5142:        * ic/m68k/m68k-insns-auto.sh:
                   5143:        * ic/m68k/m68k-misc-auto.sh: Fixed some bad macro and type name
                   5144:        references. 
                   5145: 
                   5146:        * ic/m68k/m68k-insns-auto.sh:
                   5147:        * ic/m68k/m68k-misc-auto.sh: Handled the rename of the aligned and
                   5148:        unaligned memory access rwlocking macros, and use the new
                   5149:        tme_memory_sequence_ rwlocking macros.  Generally made things a little
                   5150:        easier to read, although we do rely on the optimizer to do the right
                   5151:        thing somewhat more. 
                   5152: 
1.1       root     5153:        * tme/threads.h: Renamed the memory-access locking functions to be
1.1.1.2   root     5154:        tme_memory_HOW_WHATlock, where HOW is aligned or unaligned, and WHAT
                   5155:        is rd or wr.  Now define the tme_memory_sequence_WHATlock macros, used
                   5156:        when doing a sequence of memory accesses that must appear to be
                   5157:        atomic. 
                   5158:        Now define TME_SEQUENCE_ACCESS_NOT_COSTLIER as TRUE if locking for a
                   5159:        sequence and locking for an aligned access have the same cost, else
                   5160:        define it as FALSE. 
1.1       root     5161: 
                   5162: Sat May 10 00:31:32 2003  Matthew Fredette  <[email protected]>
                   5163: 
1.1.1.2   root     5164:        * ic/m68k/m68k-insns-auto.sh: Overhauled the shift instructions to not
                   5165:        use loops. 
                   5166: 
                   5167: Fri May 09 17:45:06 2003  Matthew Fredette  <[email protected]>
                   5168: 
                   5169:        * ic/m68k/m68k-execute.c: As an optimization, now require the
                   5170:        individual insn functions to use TME_M68K_INSN_CANFAULT if they may
                   5171:        fault, instead of figuring out every time if an insn can fault or not. 
                   5172:        Check that insn functions have set it if they need it, and left it
                   5173:        unset if they do not need it. 
                   5174: 
                   5175:        * ic/m68k/m68k-execute.c: Made some changes to somewhat optimize
                   5176:        certain effective address calculations. 
                   5177: 
                   5178:        * ic/m68k/m68k-impl.h: Now define TME_M68K_INSN_CANFAULT. 
                   5179: 
                   5180:        * ic/m68k/m68k-impl.h: Renumbered the TME_M68K_SIZE_ macros slightly
                   5181:        to enable an optimization on effective address
                   5182:        predecrement/postincrement calculation.  Grew the memory transfer
                   5183:        function arrays to match. 
                   5184:        Moved the generic IC data structure to the top of the m68k structure,
                   5185:        to enable register indexing to happen without an offset. 
                   5186:        Removed _tme_m68k_areg_increment, it's no longer needed. 
                   5187: 
                   5188:        * ic/m68k/m68k-insns-auto.sh:
                   5189:        * ic/m68k/m68k-insns.c: Now use TME_M68K_INSN_CANFAULT where it's
                   5190:        needed.  Also fixed some random restarting bugs in some insns. 
1.1       root     5191: 
1.1.1.2   root     5192:        * ic/m68k/m68k-misc.c: Removed _tme_m68k_areg_increment, it's no
                   5193:        longer needed.  Grew the memory transfer function arrays to match the
                   5194:        renumbering of the TME_M68K_SIZE_ macros, and added some preprocessor
                   5195:        error checking on those macros. 
1.1       root     5196: 
1.1.1.2   root     5197: Fri May 09 14:36:16 2003  Matthew Fredette  <[email protected]>
1.1       root     5198: 
1.1.1.2   root     5199:        * bus/multibus/3c400.c generic/bus-device.c generic/bus-el.c
                   5200:          generic/bus.c host/posix/posix-memory.c ic/am9513.c ic/mm58167.c
                   5201:          ic/z8530.c tme/generic/bus-device.h tme/generic/bus.h:
                   5202: 
                   5203:          Bulk change to no longer require bus connections to have a
                   5204:          power-of-two width.  This is largely a name change, renaming
                   5205:          address_mask to address_last, as nothing depended on the
                   5206:          address_mask being all-bits-one. 
                   5207: 
                   5208:        * bus/multibus/3c400.c (_tme_3c400_callout): Make buffer status values
                   5209:        have the minimum Ethernet frame size. 
                   5210: 
                   5211:        * ic/am9513.c: Now include <stdio.h>, in case
                   5212:        TME_AM9513_TRACK_INT_RATE is defined. 
                   5213: 
                   5214:        * ic/am9513.c: Under TME_AM9513_TRACK_INT_RATE, periodically report
                   5215:        the interrupt rates achieved by the various timers. 
                   5216: 
                   5217:        * machine/sun2/sun2-mmu.c (_tme_sun2_m68k_tlb_fill): Because
                   5218:        supervisor and user accesses go through different context registers,
                   5219:        TLBs are generally only ever valid for the supervisor or the user, but
                   5220:        not both.  Fixed a bug where a TLB for a user-visible page would be
                   5221:        marked as good for the supervisor even if the mapping isn't the same
                   5222:        in the system context. 
                   5223: 
                   5224:        * tme/generic/ethernet.h: Now define TME_ETHERNET_CRC_SIZE. 
                   5225: 
                   5226: Thu May 08 23:37:55 2003  Matthew Fredette  <[email protected]>
                   5227: 
                   5228:        * ic/m68k/m68k-insns-auto.sh: Fixed bugs, found by the verifier, in
                   5229:        the SR and CCR immediate instructions. 
                   5230: 
                   5231:        * ic/m68k/m68k-verify.c: Now keep a short ring of PCs verified. 
                   5232: 
                   5233: Thu May 08 19:22:10 2003  Matthew Fredette  <[email protected]>
                   5234: 
                   5235:        * ic/z8530.c (_tme_z8530_intack): Changes to silence -Wuninitialized. 
                   5236:        * ic/m68k/Makefile.am: No longer define _TME_M68K_OPW_OK. 
                   5237:        * ic/m68k/m68k-execute.c: Changes to support verifying restarted
                   5238:        instructions. 
                   5239: 
                   5240:        * ic/m68k/m68k-impl.h: Fixed the definitions of the dummy
                   5241:        tme_m68k_verify_ macros. 
                   5242: 
                   5243:        * ic/m68k/m68k-impl.h: Now call tme_m68k_verify_end_branch inside
                   5244:        TME_M68K_INSN_BRANCH.  Added a unique identifier member to the
                   5245:        sequence structure.  Made a few functions take a const struct tme_m68k
                   5246:        *.  Made changes to the verifier to support verifying restarted
                   5247:        instructions. 
                   5248: 
                   5249:        * ic/m68k/m68k-insns-auto.sh: Fixed a bug found by the verifier, where
                   5250:        the movem instructions weren't following the EA discipline correctly
                   5251:        and so would transfer to the wrong addresses after a restart. 
                   5252: 
                   5253:        * ic/m68k/m68k-misc.c (tme_m68k_go_slow): Now take a const struct
                   5254:        tme_m68k *. 
1.1       root     5255:        (tme_m68k_sequence_empty):
1.1.1.2   root     5256:        (tme_m68k_sequence_fill): Made the argument that's supposed to be
                   5257:        read-only const.  Under _TME_M68K_VERIFY, save and restore the
                   5258:        sequence unique identifier. 
                   5259: 
                   5260:        * ic/m68k/m68k-verify.c: Many changes to support verifying
                   5261:        instructions that ended only after they were restarted because of one
                   5262:        or more bus faults. 
1.1       root     5263: 
                   5264: Thu May 08 13:35:43 2003  Matthew Fredette  <[email protected]>
                   5265: 
1.1.1.2   root     5266:        * ic/m68k/m68k-execute.c:
                   5267:        * ic/m68k/m68k-impl.h:
                   5268:        * ic/m68k/m68k-misc.c: Replaced _TME_M68K_OPW_OK bits with new
                   5269:        _TME_M68K_VERIFY bits. 
                   5270: 
                   5271:        * ic/m68k/m68k-insns-auto.sh: In all memory access functions, added
                   5272:        calls to the verifier.  Fixed a bug in the divide routines, found by
                   5273:        the verifier - the N flag in set based on the final small quotient,
                   5274:        not on the big one. 
                   5275: 
                   5276:        * ic/m68k/m68k-misc-auto.sh: Now define TME_M68K_IREG32_COUNT. 
1.1       root     5277: 
1.1.1.2   root     5278:        * ic/m68k/m68k-verify.c: Added. 
1.1       root     5279: 
1.1.1.2   root     5280: Wed May 07 02:37:05 2003  Matthew Fredette  <[email protected]>
                   5281: 
                   5282:        * generic/bus-el.c (_tme_bus_connections_new): Store the final bus
                   5283:        interrupt signal number, not the raw ipl. 
1.1       root     5284: 
                   5285:        * ic/z8530.c: Although I hate doing this, too many changes to go into
1.1.1.2   root     5286:        detail.  Much work to support interrupt driven operation. 
                   5287: 
                   5288:        * ic/z8530reg.h: Added definitions for RR3. 
                   5289: 
                   5290:        * ic/m68k/m68k-impl.h: Fixed a serious bug in the TME_M68K_FLAG_SR
                   5291:        definition that would zero part of the interrupt mask. 
                   5292: 
                   5293:        * ic/m68k/m68k-insns-auto.sh: Fixed a bug where negx wasn't preserving
                   5294:        the Z flag if the result was zero. 
                   5295: 
                   5296:        * machine/sun2/sun2-test.c (main): Fixed a bug where the zs0 ipl arg
                   5297:        was getting lost. 
1.1       root     5298: 
1.1.1.2   root     5299: Mon May 05 23:20:11 2003  Matthew Fredette  <[email protected]>
1.1       root     5300: 
1.1.1.2   root     5301:        * TODO: Updated. 
1.1       root     5302: 
1.1.1.2   root     5303:        * generic/serial.c (tme_serial_buffer_copyout): Fixed a bug where if
                   5304:        we were copying to a NULL buffer and the copyout wrapped in the ring
                   5305:        buffer, we would do pointer arithmetic on the NULL. 
1.1       root     5306: 
1.1.1.2   root     5307:        * ic/m68k/m68010.c (_tme_m68010_rte): Fixed a bug where we forgot to
                   5308:        recover the group 0 function code and address for the cycle restart. 
                   5309:        Fixed a bug where we wouldn't reset to extract our internal state from
                   5310:        the stack buffer. 
1.1       root     5311: 
1.1.1.2   root     5312:        * ic/m68k/m68k-insns-auto.sh: Fixed several instructions that trap or
                   5313:        do trap-like things to update PC to be the PC of the following
                   5314:        instruction before trapping. 
                   5315:        (tme_m68k_read_mem): Fixed a memcpy direction bug. 
1.1       root     5316: 
1.1.1.2   root     5317:        * ic/m68k/m68k-insns.c: Fixed several instructions that trap or do
                   5318:        trap-like things to update PC to be the PC of the following
                   5319:        instruction before trapping. 
1.1       root     5320: 
1.1.1.2   root     5321:        * libtme/threads-sjlj.c (tme_sjlj_cond_notify): Fixed a bug where we
                   5322:        would cancel a thread's wait condition instead of notifying the
                   5323:        thread. 
1.1       root     5324: 
1.1.1.2   root     5325:        * machine/sun/sun-mmu.c (tme_sun_mmu_tlb_fill): Support the new
                   5326:        expansive MMU PTE protections. 
1.1       root     5327: 
1.1.1.2   root     5328:        * machine/sun2/sun2-mainbus.c (_tme_sun2_bus_intack): Now acknowledge
                   5329:        soft interrupts. 
                   5330:        (tme_machine_sun2_clock_new): Fixed a bug where we had the Timer 2
                   5331:        output miswired. 
1.1       root     5332: 
1.1.1.2   root     5333:        * machine/sun2/sun2-mmu.c: Many changes to support the new full
                   5334:        understanding of sun2 PTE protections. 
1.1       root     5335: 
1.1.1.2   root     5336:        * tme/machine/sun.h: Expanded on the generic PTE protections, to
                   5337:        support the more expressive sun2 protections. 
1.1       root     5338: 
1.1.1.2   root     5339: Sun May 04 22:46:12 2003  Matthew Fredette  <[email protected]>
1.1       root     5340: 
1.1.1.2   root     5341:        * ic/am9513.c (_tme_am9513_counters_disarm): Added. 
                   5342:        (_tme_am9513_th_timer): Try to avoid 32-bit integer overflow when
                   5343:        calculating the sleep time. 
                   5344:        (_tme_am9513_bus_cycle): Now support the disarm timers command. 
1.1       root     5345: 
1.1.1.2   root     5346:        * ic/mm58167.c: Changes to silence -Wuninitialized. 
1.1       root     5347: 
1.1.1.2   root     5348:        * ic/mm58167.c:
                   5349:        * tme/ic/mm58167.h: Added. 
1.1       root     5350: 
1.1.1.2   root     5351:        * ic/z8530.c: Although I hate doing this, too much work to go into
                   5352:        detail.  Did more groundwork for eventually generating interrupts. 
1.1       root     5353: 
1.1.1.2   root     5354:        * ic/m68k/m68k-execute.c: Now wrap the execute hook call in
                   5355:        _TME_M68K_OPW_OK. 
1.1       root     5356: 
1.1.1.2   root     5357:        * ic/m68k/m68k-misc.c (tme_m68k_exception_process_start): Fixed a bug
                   5358:        where the new ipl mask was put into the sr at the wrong position. 
                   5359: 
                   5360:        * machine/sun2/sun2-mainbus.c (tme_machine_sun2_tod_new): Added. 
                   5361: 
                   5362:        * machine/sun2/sun2-mmu.c (_tme_sun2_obbus_fault_handler): Removed. 
1.1       root     5363:        (_tme_sun2_bus_fault_handler):
                   5364:        (_tme_sun2_obio_fault_handler):
1.1.1.2   root     5365:        (_tme_sun2_obmem_fault_handler): Added. 
1.1       root     5366:        (_tme_sun2_multibus_fault_handler): Now just call
1.1.1.2   root     5367:        _tme_sun2_bus_fault_handler. 
                   5368:        (_tme_sun2_tlb_fill_mmu): Use the new bus-specific fault handlers. 
                   5369: 
                   5370:        * machine/sun2/sun2-test.c: Now create and connect the TOD chip. 
                   5371: 
                   5372:        * tme/ic/Makefile.am: Updated. 
1.1       root     5373: 
                   5374: Sat May 03 19:27:07 2003  Matthew Fredette  <[email protected]>
                   5375: 
1.1.1.2   root     5376:        * TODO: Updated. 
                   5377: 
                   5378:        * ic/m68k/m68k-execute.c: Fixed multiple bugs in the handling of brief
                   5379:        EA extension words. 
                   5380: 
                   5381:        * ic/m68k/m68k-insns-auto.sh: Fixed a bug where subx and addx didn't
                   5382:        take the (previous) X flag into account when calculating flags. 
                   5383: 
                   5384:        * machine/sun2/sun2-control.c (_tme_sun2_control_cycle_handler): Now
                   5385:        call _tme_sun2_ipl_check whenever the enable register is written. 
                   5386: 
                   5387:        * machine/sun2/sun2-impl.h: Added macros for the enable register bits. 
                   5388: 
                   5389:        * machine/sun2/sun2-mainbus.c (_tme_sun2_ipl_check): Added. 
                   5390:        (_tme_sun2_bus_signal): Now call _tme_sun2_ipl_check to update the ipl
                   5391:        driven to the CPU. 
                   5392: 
                   5393: Fri May 02 17:37:10 2003  Matthew Fredette  <[email protected]>
                   5394: 
                   5395:        * TODO: Updated. 
                   5396: 
                   5397:        * acconfig.h acinclude.m4 bus/multibus/3c400.c
                   5398:          bus/multibus/Makefile.am generic/ethernet.c host/bsd/Makefile.am
                   5399:          host/bsd/bsd-bpf.c host/bsd/bsd-if.c tme/generic/ethernet.h:
                   5400: 
                   5401:          Added. 
                   5402: 
                   5403:        * configure.in: Now check for minimum alignments.  Now check for
                   5404:        various headers and other things needed by the BSD code. 
                   5405: 
                   5406:        * bus/Makefile.am:
                   5407:        * generic/Makefile.am:
                   5408:        * host/Makefile.am:
                   5409:        * tme/generic/Makefile.am: Added support for new components. 
                   5410: 
                   5411:        * bus/multibus/3c400.c (_tme_3c400): Some changes to silence
                   5412:        -Wuninitialized. 
                   5413: 
                   5414:        * host/posix/posix-serial.c: Fixed some indentation, and one 0 to a
                   5415:        TME_OK. 
                   5416: 
1.1       root     5417:        * ic/am9513.c (_tme_am9513_counters_load):
1.1.1.2   root     5418:        (_tme_am9513_counters_arm): Added. 
                   5419:        (_tme_am9513_th_timer): Try to avoid multiplication overflow when
                   5420:        calculating the number of basic ticks that have elapsed.  Try to
                   5421:        handle armed and unarmed counters correctly. 
                   5422:        (_tme_am9513_bus_cycle): Now load and arm counters correctly. 
                   5423:        (tme_ic_am9513_new): Calculate the number of basic ticks in a
                   5424:        millisecond for the benefit of the timer thread. 
                   5425: 
                   5426:        * ic/m68k/m68010.c (_tme_m68010_rte): tme_m68k_rte_finish no longer
                   5427:        touches the sequence at all, so before calling it make sure the
                   5428:        sequence is exactly what it's supposed to be. 
                   5429: 
                   5430:        * ic/m68k/m68k-execute.c: In the fast executor, assert that the ITLB
                   5431:        entry allows fast reading for the current PC or that the PC is one
                   5432:        greater than the last address covered by the entry.  Fixed the
                   5433:        fast-fetch-failed code to more correctly simulate a group 0 exception
                   5434:        and associated RTE. 
                   5435: 
                   5436:        * ic/m68k/m68k-insns-auto.sh: Cleaned up and fixed the code generated
                   5437:        for cmpm, addx, and subx.  At least, cmpm wasn't getting its address
                   5438:        registers postincremented, and addx and subx weren't treating the Z
                   5439:        flag properly.  In the fetch insns, take the address to fetch from as
                   5440:        an argument, instead of using the real ic->tme_m68k_ireg_pc with
                   5441:        tme_m68k_read
1.1       root     5442:        (which could actually update it, if recovering from a group 0
                   5443:        exception!)
                   5444: 
1.1.1.2   root     5445:        * ic/m68k/m68k-misc-auto.sh: The slow-executor fetch macros now call
                   5446:        the fetch insns with the PC to fetch from. 
1.1       root     5447: 
1.1.1.2   root     5448:        * ic/m68k/m68k-misc.c (tme_m68k_rte_finish): No longer do anything
                   5449:        with the sequence at all, just redispatch it. 
                   5450:        (tme_m68k_sequence_fill): Now set the sequence next-transfer to one,
                   5451:        to force a restart in case later code doesn't. 
                   5452:        (tme_m68k_insn_buffer_xfer): The insn buffer is kept in host byte
                   5453:        order, not big-endian byte order. 
                   5454: 
                   5455:        * libtme/threads-sjlj.c: No longer track and relock a mutex that was
                   5456:        held when tme_sjlj_cond_wait_yield was called; the thread itself will
                   5457:        relock the mutex when it is restarted. 
                   5458: 
                   5459:        * machine/sun2/Makefile.am: Now build and link against the Multibus
                   5460:        and BSD libraries. 
                   5461: 
                   5462:        * machine/sun2/sun2-test.c (tme_memdup): Added. 
                   5463:        (connect_elements): Now start the new convention of initializing the
                   5464:        new-connections lists to NULL and letting the new-connections
                   5465:        functions add elements incrementally. 
1.1       root     5466:        (main): Now create the ec0 and bpf0 elements and add them to the
1.1.1.2   root     5467:        machine. 
1.1       root     5468: 
1.1.1.2   root     5469:        * tme/common.h: Added a macro for tme_dup and a prototype for
                   5470:        tme_memdup. 
1.1       root     5471: 
1.1.1.2   root     5472:        * tme/connection.h: Now define TME_CONNECTION_ETHERNET. 
                   5473: 
                   5474:        * tme/threads.h: Fixed a bug where the tme_thread_write macro was
                   5475:        defined to be the read syscall. 
1.1       root     5476: 
                   5477: Tue Apr 29 20:28:05 2003  Matthew Fredette  <[email protected]>
                   5478: 
1.1.1.2   root     5479:        * AUTHORS:
                   5480:        * COPYING:
                   5481:        * NEWS:
                   5482:        * README: Added. 
                   5483: 
                   5484:        * generic/bus-device.c generic/bus-el.c host/posix/posix-serial.c
                   5485:          ic/z8530.c ic/m68k/m68k-misc.c machine/sun2/sun2-mainbus.c:
                   5486: 
                   5487:          In all connections_new functions, add the new connection
                   5488:          possibilities to the list rooted at *_conns, instead of always
                   5489:          replacing the list. 
                   5490: 
                   5491:        * generic/bus-el.c host/posix/posix-memory.c ic/am9513.c
                   5492:          ic/m68k/m68k-execute.c ic/m68k/m68k-insns-auto.sh
                   5493:          ic/m68k/m68k-insns.c machine/sun2/sun2-mainbus.c:
1.1       root     5494: 
1.1.1.2   root     5495:          Changes to silence -Wuninitialized. 
                   5496: 
                   5497:        * generic/serial.c:
                   5498:        * tme/generic/serial.h: Removed all instances of gen- in comments. 
                   5499: 
                   5500:        * host/posix/posix-serial.c (_tme_posix_serial_th_reader): Fixed bugs
                   5501:        in scanning the input for various escape-like sequences, especially
                   5502:        for the escaped break signal. 
                   5503: 
                   5504:        * host/posix/posix-serial.c (_tme_posix_serial_th_reader): Simplified
                   5505:        the code that decides to call out that we are readable. 
1.1       root     5506:        (_tme_posix_serial_ctrl): Always try to call out reads if the
1.1.1.2   root     5507:        connection says it's readable, even if we already knew that. 
                   5508:        (_tme_posix_serial_read): Fixed a bug where we would clear everything
                   5509:        *except* TME_SERIAL_CTRL_OK_READ, instead of clearing only that bit. 
                   5510:        (tme_host_posix_serial_new): Return EINVAL on bad arguments. 
                   5511: 
                   5512:        * ic/Makefile.am: Now define DIST_SUBDIRS. 
                   5513: 
                   5514:        * ic/z8530.c (_tme_z8530_callout): Fixed a bug where we would use an
                   5515:        uninitialized chan variable to find WR9, which actually only exists in
                   5516:        channel A anyways. 
1.1       root     5517:        (_tme_z8530_ctrl): Now always try to call out reads if the connection
1.1.1.2   root     5518:        says it's readable. 
                   5519: 
                   5520:        * libtme/threads-sjlj.c: Wrap all of the rwlock operations in
                   5521:        !TME_NO_DEBUG_LOCKS. 
                   5522:        (tme_sjlj_threads_run): Changes to silence -Wuninitialized. 
1.1       root     5523: 
1.1.1.2   root     5524:        * tme/Makefile.am:
                   5525:        * tme/generic/Makefile.am: Now install roughly the correct files into
                   5526:        the correct place. 
1.1       root     5527: 
1.1.1.2   root     5528:        * tme/atomics.h: Fixed a bug where TME_ATOMIC_POINTER_TYPE was adding
                   5529:        an extra *. 
1.1       root     5530: 
1.1.1.2   root     5531:        * tme/element.h: Fixed bugs in the TME_NO_LOG versions of TME_LOG_X
                   5532:        and TME_LOG_FINISH. 
                   5533: 
                   5534: Tue Apr 29 03:24:17 2003  Matthew Fredette  <[email protected]>
                   5535: 
                   5536:        * TODO:
                   5537:        * machine/sun2/sun2-test.c: Updated. 
                   5538: 
                   5539:        * generic/bus-device.c: Support the new generic bus signal interface. 
1.1       root     5540:        (tme_bus_device_connection_score):
                   5541:        (tme_bus_device_connection_make):
1.1.1.2   root     5542:        (tme_bus_device_connection_break): These are now public. 
1.1       root     5543: 
1.1.1.2   root     5544:        * generic/bus-el.c: Added support for the new generic bus signal
                   5545:        interface. 
                   5546:        (_tme_bus_line_raise): Removed. 
1.1       root     5547:        (_tme_bus_signal):
1.1.1.2   root     5548:        (_tme_bus_intack): Added. 
1.1       root     5549: 
1.1.1.2   root     5550:        * generic/serial.c: Removed all uses of TME_ATOMIC. 
                   5551:        (tme_serial_buffer_copyout): Fixed a bug where we would overwrite
                   5552:        data_flags with -1 early, resulting in our returning no data. 
1.1       root     5553: 
1.1.1.2   root     5554:        * host/posix/posix-serial.c: Too much work to go into detail. 
                   5555:        Everything is at least sketched out. 
1.1       root     5556: 
                   5557:        * ic/am9513.c (_tme_am9513_callout):
1.1.1.2   root     5558:        (_tme_am9513_th_timer): Added. 
                   5559:        (_tme_am9513_bus_cycle): Now properly handle the Clear Toggle Output
                   5560:        command, and log it correctly.  Lock the new mutex on entry, call
                   5561:        _tme_am9513_callout if needed before exit, and unlock the mutex on
                   5562:        exit. 
                   5563:        (tme_ic_am9513_new): Start the new timer thread. 
1.1       root     5564: 
                   5565:        * ic/z8530.c: Too many changes to go into detail.  Highlights include
1.1.1.2   root     5566:        a real bus cycle handler, real channels, real serial connections, real
                   5567:        threads.  Everything seems to be at least sketched out. 
                   5568: 
                   5569:        * ic/z8530reg.h: Added. 
                   5570: 
                   5571:        * ic/m68k/m68k-execute.c: Fixed a bug where we were using the return
                   5572:        value of tme_mutex_trylock as a truth value. 
                   5573: 
                   5574:        * ic/m68k/m68k-misc.c: Changed to support the new generic bus signal
                   5575:        interface and the new m68k bus interrupt interface. 
                   5576: 
                   5577:        * libtme/threads-sjlj.c (tme_sjlj_threads_run): Fixed a bug where we
                   5578:        wouldn't lock the mutex before returning from a condition wait.  Fixed
                   5579:        a bug where we would block in select(2) instead of calling it with a
                   5580:        zero timeout. 
                   5581:        (tme_sjlj_cond_wait_yield): Remember the mutex the thread had locked
                   5582:        so it can be relocked when the thread resumes. 
                   5583:        (tme_sjlj_select_yield): Fixed bugs where we would treat the nfds
                   5584:        argument as the maximum fd, instead of the maximum fd plus one.  Fixed
                   5585:        a bug where we couldn't handle NULL descriptor sets. 
1.1       root     5586:        (tme_sjlj_read_yield):
                   5587:        (tme_sjlj_write_yield):
                   5588:        (tme_sjlj_read_yield):
                   5589:        (tme_sjlj_rwlock_init):
                   5590:        (tme_sjlj_rwlock_lock):
1.1.1.2   root     5591:        (tme_sjlj_rwlock_unlock): Added. 
1.1       root     5592: 
1.1.1.2   root     5593:        * machine/sun2/sun2-impl.h: Now track the interrupts asserted in the
                   5594:        system, and the last ipl asserted to the CPU. 
1.1       root     5595: 
                   5596:        * machine/sun2/sun2-mainbus.c (_tme_sun2_line_reset):
                   5597:        (_tme_sun2_line_halt):
1.1.1.2   root     5598:        (_tme_sun2_line_interrupt): Removed. 
1.1       root     5599:        (_tme_sun2_bus_signal):
1.1.1.2   root     5600:        (_tme_sun2_bus_intack): Added. 
                   5601:        (_tme_sun2_power): Use the generic bus signal interface to reset
                   5602:        everything. 
                   5603:        (tme_machine_sun2_clock_new): Store how the Am9513 output pins are
                   5604:        connected to bus interrupt lines. 
                   5605: 
                   5606:        * machine/sun2/sun2-mmu.c (_tme_sun2_multibus_fault_handler): Added a
                   5607:        hack to avoid an mbmem bus error when accessed through virtual
                   5608:        0xffffffff, which apparently happens in the PROM NMI routine when it
                   5609:        polls the keyboard, even if it didn't probe a keyboard. 
                   5610: 
                   5611:        * tme/element.h: Fixed various const to _tme_const. 
                   5612: 
                   5613:        * tme/threads.h: Redid the setjmp/longjmp rwlock operations.  Added
                   5614:        various new function prototypes and macros. 
                   5615: 
                   5616:        * tme/generic/bus-device.h: Support the new generic bus signal
                   5617:        interface.  The tme_bus_device_connection_score,
                   5618:        tme_bus_device_connection_make, and tme_bus_device_connection_break
                   5619:        functions are now public.  Fixed a const to _tme_const. 
                   5620: 
                   5621:        * tme/generic/bus.h: Added the new generic bus signal and interrupt
                   5622:        acknowledge interfaces.  Fixed various const to _tme_const. 
                   5623: 
                   5624:        * tme/generic/serial.h: Now define TME_SERIAL_CTRL_OK_READ.  Removed
                   5625:        the write method from a serial connection.  All data transfer happens
                   5626:        with reads, with control signals to indicate when reads are OK. 
                   5627:        Removed the TME_ATOMIC use in struct tme_serial_buffer. 
1.1       root     5628:        (tme_serial_buffer_is_empty):
1.1.1.2   root     5629:        (tme_serial_buffer_is_full): Added. 
                   5630: 
                   5631:        * tme/ic/am9513.h: struct tme_am9513_socket now holds the basic clock
                   5632:        provided to the chip, and a mapping of its output pins to bus signals. 
                   5633:        Fixed a const to _tme_const. 
                   5634: 
                   5635:        * tme/ic/m68k.h: Now define some m68k IPL constant macros.  Add the
                   5636:        new m68k bus interrupt method.  Fixed various const to _tme_const. 
                   5637: 
                   5638:        * tme/ic/z8530.h: Made the channel letters lowercase in structure
                   5639:        member names.  Fixed a const to _tme_const. 
                   5640: 
                   5641: Sat Apr 26 21:46:16 2003  Matthew Fredette  <[email protected]>
                   5642: 
                   5643:        * Makefile.am TODO configure.in generic/Makefile.am
                   5644:          generic/bus-device.c generic/bus-el.c generic/bus.c generic/serial.c
                   5645:          host/posix/posix-memory.c host/posix/posix-serial.c ic/am9513.c
                   5646:          ic/z8530.c ic/i386/i386-decode.c ic/i386/i386-misc-auto-make.sh
                   5647:          ic/i386/i386-opmaps-make.sh ic/i386/i386-save.c
                   5648:          ic/i386/i386-uinsns-auto-make.sh ic/i386/i386-uinsns.c
                   5649:          ic/i386/i386.h tme/generic/Makefile.am tme/generic/bus-device.h
                   5650:          tme/generic/bus.h tme/generic/ic.h tme/generic/serial.h
                   5651:          tme/ic/am9513.h tme/ic/z8530.h:
                   5652: 
                   5653:          Added. 
                   5654: 
                   5655:        * bus/Makefile.am host/posix/Makefile.am ic/m68k/Makefile.am
                   5656:          machine/Makefile.am machine/sun/Makefile.am machine/sun2/Makefile.am
                   5657:          machine/sun2/sun2-test.c:
1.1       root     5658: 
1.1.1.2   root     5659:          Updated. 
1.1       root     5660: 
1.1.1.2   root     5661:        * bus/bus-device.c bus/bus.c tme/bus-device.h tme/bus.h tme/ic.h:
                   5662: 
                   5663:          Removed. 
                   5664: 
                   5665:        * host/posix/memory.c: Renamed to posix-memory.c. 
                   5666: 
                   5667:        * ic/m68k/m68k-execute.c: Under _TME_M68K_EXECUTE_FAST, at the
                   5668:        beginning of each instruction we do have to check if our ITLB has been
                   5669:        invalidated, as it might have been by some random (control) memory
                   5670:        cycle we just did. 
                   5671:        Fixed bugs in the predecrement and postincrement EA handlers. 
                   5672: 
                   5673:        * ic/m68k/m68k-impl.h:
                   5674:        * machine/sun2/sun2-impl.h: Now include <tme/generic/ic.h>. 
                   5675: 
                   5676:        * ic/m68k/m68k-impl.h: Added support for logging. 
                   5677: 
                   5678:        * ic/m68k/m68k-insns-auto.sh: Fixed a serious movem bug where we would
                   5679:        start at bit 1 in the mask, and not bit 0. 
                   5680:        In all memory transfer functions, log the transfer.  Made the bus
                   5681:        cycle functions "work correctly".  Fixed bugs in the generated divide
                   5682:        instructions. 
                   5683: 
                   5684:        * ic/m68k/m68k-insns.c (tme_m68k_swap): Fixed a bug where this
                   5685:        wouldn't work on big-endian systems. 
1.1       root     5686:        (tme_m68k_link):
1.1.1.2   root     5687:        (tme_m68k_unlk): Fixed serious bugs where we simply didn't do what
                   5688:        these instructions are supposed to do. 
1.1       root     5689: 
1.1.1.2   root     5690:        * ic/m68k/m68k-iset.txt: On the 68010 and up, the move_from_sr and
                   5691:        move_from_ccr instructions don't read memory before writing it.  Fixed
                   5692:        bugs in the encoding of the register bit-shifting with a register
                   5693:        count instructions. 
                   5694: 
                   5695:        * ic/m68k/m68k-misc.c (tme_m68k_idle): Use the renamed
                   5696:        tme_cond_wait_yield function. 
                   5697:        (tme_m68k_new): Store the element in the IC. 
                   5698:        (tme_m68k_go_slow): Use the TME_M68K_TLB_OK_FAST_READ to check for a
                   5699:        bad TLB entry. 
                   5700:        (tme_m68k_exception_process): Don't insist on there being exceptions
                   5701:        to process.  CPU-specific exception processors may handle them all,
                   5702:        yet still use this function to redispatch. 
                   5703:        (_tme_m68k_execute_hook): Added. 
1.1       root     5704: 
                   5705:        * libtme/threads-sjlj.c (_tme_sjlj_then):
                   5706:        (_tme_sjlj_timeout):
                   5707:        (tme_sjlj_sleep_yield):
1.1.1.2   root     5708:        (tme_sjlj_select_yield): Added. 
                   5709:        (tme_sjlj_threads_run): Cleaned up the threads dispatcher to support
                   5710:        threads waiting on classic select(2) fd sets,
                   5711:        (tme_sjlj_cond_wait_yield): Renamed from tme_sjlj_cond_wait. 
                   5712:        (tme_sjlj_sleep): This function no longer yields. 
                   5713: 
                   5714:        * machine/sun/sun-mmu.c: Added some logging. 
                   5715:        Disabled the explicit SEGINV support, for now.  It appears that the
                   5716:        hardware MMU doesn't have a notion of an invalid PMEG.  Now call the
                   5717:        post-MMU TLB fillers with the PTE struct and the virtual address. 
                   5718: 
                   5719:        * machine/sun2/sun2-control.c (_tme_sun2_control_cycle_handler): Don't
                   5720:        bother to fill the segmap register unless this is a read. 
1.1       root     5721: 
1.1.1.2   root     5722:        * machine/sun2/sun2-impl.h: Now include <tme/generic/bus.h>.  Added
                   5723:        some support for logging. 
                   5724: 
                   5725:        * machine/sun2/sun2-mainbus.c: Added some support for logging. 
1.1       root     5726:        (tme_machine_sun2_clock_new):
1.1.1.2   root     5727:        (tme_machine_sun2_zs_new): Added. 
1.1       root     5728: 
                   5729:        * machine/sun2/sun2-mmu.c: Too much to go into detail.  Highlights:
1.1.1.2   root     5730:        Added some logging support. 
                   5731:        Made the bus error behavior more correct.  On the sun2, obio and obmem
                   5732:        don't generate bus errors.  Now the post-MMU TLB filler takes the
                   5733:        original PTE entry and the original virtual address. 
                   5734: 
                   5735:        * tme/connection.h: Now define TME_CONNECTION_SERIAL. 
                   5736: 
                   5737:        * tme/element.h: Added logging support. 
                   5738: 
1.1       root     5739:        * tme/ic.h: Now include <tme/generic/bus.h>
1.1.1.2   root     5740: 
                   5741:        * tme/threads.h: Defined more of the tme threads API. 
                   5742: 
                   5743:        * tme/ic/m68k.h: Now include <tme/generic/bus.h>. 
                   5744: 
                   5745:        * tme/machine/sun.h: Added support for logging. 
                   5746:        Changed the interface to pass the whole PTE struct to the post-MMU TLB
                   5747:        fillers. 
1.1       root     5748: 
                   5749: Sat Apr 26 14:44:07 2003  Matthew Fredette  <[email protected]>
                   5750: 
1.1.1.2   root     5751:        * bus/bus.c (tme_bus_cycle_xfer): Fixed a bug where we used
                   5752:        cycle_writer to get the reader's port size.  When indexing bus router
                   5753:        arrays, we have to subtract out the participant's least port lane,
                   5754:        since the arrays don't include information for lanes not connected to
                   5755:        the participant. 
                   5756: 
                   5757: Wed Apr 23 19:31:01 2003  Matthew Fredette  <[email protected]>
                   5758: 
                   5759:        * bus/Makefile.am bus/bus-device.c bus/bus.c host/Makefile.am
                   5760:          host/posix/Makefile.am host/posix/memory.c ic/Makefile.am
                   5761:          ic/m68k/m68k-impl.h libtme/Makefile.am libtme/threads-sjlj.c
                   5762:          machine/sun/Makefile.am machine/sun/sun-mmu.c
                   5763:          machine/sun2/Makefile.am machine/sun2/sun2-control.c
                   5764:          machine/sun2/sun2-impl.h machine/sun2/sun2-mainbus.c
                   5765:          machine/sun2/sun2-mmu.c machine/sun2/sun2-test.c tme/Makefile.am
                   5766:          tme/atomics.h tme/bus-device.h tme/bus.h tme/common.h
                   5767:          tme/connection.h tme/element.h tme/ic.h tme/threads.h
                   5768:          tme/ic/Makefile.am tme/ic/m68k.h tme/machine/Makefile.am
                   5769:          tme/machine/sun.h:
                   5770: 
                   5771:          Added. 
                   5772: 
1.1       root     5773:        * ic/m68k/m68010.c (_tme_m68010_exception):
1.1.1.2   root     5774:        (_tme_m68010_rte): Added. 
1.1       root     5775: 
1.1.1.2   root     5776:        * ic/m68k/m68k-bus-auto.sh: Now generates the combined input/output
                   5777:        bus routers. 
                   5778: 
                   5779:        * ic/m68k/m68k-execute.c:
                   5780:        * ic/m68k/m68k-insns.c:
                   5781:        * ic/m68k/m68k-misc.c: Although I hate doing this, "too many changes
                   5782:        to list."
                   5783: 
                   5784:        * ic/m68k/m68k-insns-auto.sh: Some minor copyright and cosmetic fixes. 
                   5785:        Updated the bus cycle functions to support the latest generic bus
                   5786:        cycle idea. 
                   5787: 
                   5788:        * ic/m68k/m68k-iset-expand.pl: When the EA is an immediate, just emit
                   5789:        the immediate information and skip the EA information - we don't want
                   5790:        to use the EA path in this case. 
                   5791: 
                   5792:        * ic/m68k/m68k-iset.txt: moveq is now its own insn. 
                   5793: 
                   5794:        * ic/m68k/m68k-misc-auto.sh: Copyright sweep. 
                   5795: 
                   5796:        * ic/m68k/m68k-opmap-make.pl: Fixed some random bugs, and correctly
                   5797:        handle the case where EA and immediate operand must be undefined for a
                   5798:        pattern, to avoid using the EA and immediate operand in any root
                   5799:        entry. 
                   5800: 
                   5801:        * ic/m68k/m68k.h: Removed. 
1.1       root     5802: 
                   5803: Sun Apr 20 21:33:05 2003  Matthew Fredette  <[email protected]>
                   5804: 
1.1.1.2   root     5805:        * ic/m68k/m68k-bus-auto.sh: Added. 
1.1       root     5806: 
                   5807: Fri Apr 18 04:56:36 2003  Matthew Fredette  <[email protected]>
                   5808: 
1.1.1.2   root     5809:        * ic/m68k/m68k-insns-auto.sh: Added support for generating the moveq32
                   5810:        insn.  Cleaned up and fixed some bugs in the bus cycle functions. 
1.1       root     5811: 
1.1.1.2   root     5812:        * ic/m68k/m68k-misc-auto.sh: Cleaned up the set of registers that we
                   5813:        define.  Added better locking support to the instruction fetch macros. 
1.1       root     5814: 
                   5815: Tue Apr 15 13:32:37 2003  Matthew Fredette  <[email protected]>
                   5816: 
1.1.1.2   root     5817:        * ic/m68k/m68k-insns-auto.sh: Unfortunately, too much work to list in
                   5818:        detail.  Improved the arithmetic function flag-setting code to compile
                   5819:        well on i386 with gcc -O2.  Added many special-purpose memory read and
                   5820:        write functions, and finally introduced the general bus-cycle read and
                   5821:        write functions.  Added many new instructions, including multiply and
                   5822:        divide. 
1.1       root     5823: 
                   5824: Sat Apr 05 18:47:38 2003  Matthew Fredette  <[email protected]>
                   5825: 
1.1.1.2   root     5826:        * machine/Makefile.am: Added. 
1.1       root     5827: 
1.1.1.2   root     5828: Tue Apr 01 20:13:40 2003  Matthew Fredette  <[email protected]>
1.1       root     5829: 
1.1.1.2   root     5830:        * ic/m68k/Makefile.am: Build decoders for the 68000, 68010, and 68020. 
                   5831:        * ic/m68k/m68k-iset-expand.pl: Added a very basic preprocessor to
                   5832:        support generating different instruction sets for different CPUs.  Now
                   5833:        whenever an instruction wants the EA, its operand is eax.32 even if
                   5834:        the known EA is address register indirect. 
1.1       root     5835: 
1.1.1.2   root     5836:        * ic/m68k/m68k-iset.txt: This should be the complete integer
                   5837:        instruction set for the 68000, 68010, 68020, and 68030. 
1.1       root     5838: 
1.1.1.2   root     5839:        * ic/m68k/m68k-opmap-make.pl: Added comments, and reworked to support
                   5840:        compiling instruction sets for different CPUs together, reusing
                   5841:        submaps and opcode maps whenever possible. 
1.1       root     5842: 
1.1.1.2   root     5843:        * ic/m68k/m68k.h: Before the -impl.h split. 
1.1       root     5844: 
                   5845: Sun Mar 30 22:04:15 2003  Matthew Fredette  <[email protected]>
                   5846: 
1.1.1.2   root     5847:        * ic/m68k/Makefile.am ic/m68k/m68010.c ic/m68k/m68k-execute.c
                   5848:          ic/m68k/m68k-insns-auto.sh ic/m68k/m68k-insns.c
                   5849:          ic/m68k/m68k-iset-expand.pl ic/m68k/m68k-iset.txt
                   5850:          ic/m68k/m68k-misc-auto.sh ic/m68k/m68k-misc.c
                   5851:          ic/m68k/m68k-opmap-make.pl ic/m68k/m68k.h:
1.1       root     5852: 
1.1.1.2   root     5853:          Added. 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.