mirror of
https://github.com/phabrics/Run-Sun3-SunOS-4.1.1.git
synced 2026-04-29 19:12:58 -04:00
5854 lines
253 KiB
Plaintext
5854 lines
253 KiB
Plaintext
Sun Jun 06 20:52:27 2010 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* Release 0.8 out.
|
|
|
|
Sat Jun 05 19:56:37 2010 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* TODO: Updated.
|
|
|
|
* configure.in: Bumped version to 0.8.
|
|
|
|
* ic/ncr5380.c: Changed or cast various tme_bus_addr_t to
|
|
tme_bus_addr32_t. In struct tme_ncr5380, store an actual TLB entry
|
|
instead of a pointer to an allocated entry.
|
|
(_tme_ncr5380_bus_tlb_fill): Replaced the call to tme_bus_tlb_back()
|
|
with a plain structure copy.
|
|
(_tme_ncr5380_connection_make_bus): Call tme_bus_device_tlb_set_add()
|
|
to add the TLB entry to the connection.
|
|
|
|
* ic/ncr53c9x.c: Changed or cast various tme_bus_addr_t to
|
|
tme_bus_addr32_t. In struct tme_ncr53c9x, store an actual TLB entry
|
|
instead of a pointer to an allocated entry. Added
|
|
tme_ncr53c9x_detected_scsi_reset.
|
|
(_tme_ncr53c9x_update): When SCSI RST is first detected, issue a SCSI
|
|
reset interrupt if it hasn't been disabled. In
|
|
TME_NCR53C9X_CMD_RESET_BUS, no longer signal a SCSI reset interrupt.
|
|
This will be done when the SCSI RST is detected.
|
|
(_tme_ncr53c9x_callout): Fixed bugs where we wouldn't always wrap the
|
|
FIFO head and tail.
|
|
Replaced the call to tme_bus_tlb_back() with a plain structure copy.
|
|
When a SCSI DMA cycle is transferring out to the SCSI bus, only
|
|
initially clear the SCSI DMA buffer if DMA is not running - if DMA is
|
|
running, and the data FIFO is empty, and the TLB entry doesn't support
|
|
fast reading, the code that sets up a transfer into the data FIFO
|
|
needs to know how much space is available in the data FIFO starting at
|
|
the tail, until the end of the data FIFO. Also call
|
|
_tme_ncr53c9x_fifo_data_update() to update the Current FIFO register.
|
|
(_tme_ncr53c9x_connection_make_bus): Call tme_bus_device_tlb_set_add()
|
|
to add the TLB entry to the connection.
|
|
|
|
* ic/z8530.c (_tme_z8530_rr2_update): Now take the single RR3
|
|
interrupt bit, or zero, to use for the modified interrupt vector in
|
|
RR2.
|
|
(_tme_z8530_int_pending): Now call _tme_z8530_rr2_update() to update
|
|
the modified interrupt vector in RR2.
|
|
(_tme_z8530_intack): Fixed a bug where we would accept an interrupt
|
|
acknowledge even if the IEI pin was tied low. Get the vector directly
|
|
from the channel B RR2.
|
|
(_tme_z8530_bus_cycle): In TME_Z8530_WR0_CMD_RESET_IUS, no longer call
|
|
_tme_z8530_rr2_update(). The eventual interrupt check for
|
|
TME_Z8530_CALLOUT_INT will update RR2.
|
|
|
|
* ic/sparc/sparc-fpu.c (tme_sparc_fpu_exception_check): On sparc64,
|
|
when the exception is not an ieee754 exception, use the
|
|
fp_exception_other trap.
|
|
|
|
* ic/sparc/sparc-impl.h [_TME_SPARC_STATS] [TME_HAVE_RECODE]: Track
|
|
the number of recode source hash misses.
|
|
Declare tme_sparc32_recode_insn_current() and
|
|
tme_sparc64_recode_insn_current().
|
|
[!_TME_SPARC_RECODE_VERIFY] tme_sparc_recode_verify_reg_tick_now():
|
|
Silence a possible known-nonzero warning.
|
|
|
|
* ic/sparc/sparc-insns-auto.sh: Fixed some comments.
|
|
|
|
* ic/sparc/sparc-misc.c (_tme_sparc_runlength): Added.
|
|
(_tme_sparc_command): Added the run-length and prom-delay-factor
|
|
commands.
|
|
(tme_sparc_new): Removed the prom-delay-factor option. Now call
|
|
_tme_sparc_runlength() to set the initial run length.
|
|
(tme_sparc32_external_check): 32-bit SPARCs default to no interrupt
|
|
acknowledge cycle.
|
|
(tme_sparc_itlb_current): Fixed pointer arithmetic bugs in the
|
|
no-recode case.
|
|
|
|
* ic/sparc/sparc-rc-insns.c: TME_SPARC_RECODE_INSN_LD and
|
|
TME_SPARC_RECODE_INSN_ST instructions no longer update the instruction
|
|
register. mulscc only needs the simplest assist.
|
|
(tme_sparc_recode_insn_current): Added.
|
|
(tme_sparc_recode_insn_assist_redispatch): Added a comment about the
|
|
PC we check. Rewritten to prepare for future additional redispatch
|
|
conditions.
|
|
(_tme_sparc_recode_insn_assist_full): Fixed a bug where we wouldn't
|
|
use TME_SPARC_G0_OFFSET(ic) to find the %g0 to zero.
|
|
(_tme_sparc_recode_recode): Fixed bugs in checking the immediate ASI
|
|
of a v9 ld*a instruction for the default unrestricted ASI with the
|
|
right endianness.
|
|
Fixed a bug where we would test for the branch target being near or
|
|
far after we had possibly updated the displacement. Fixed various
|
|
other bugs in testing control transfer targets for near or far.
|
|
If the second source operand is an immediate zero, make a
|
|
TME_RECODE_OPERAND_ZERO instead of a TME_RECODE_OPERAND_IMM.
|
|
|
|
* ic/sparc/sparc-rc-ls.c (_tme_sparc_recode_ls_assist_check): Get the
|
|
instruction from ic->_tme_sparc_insn, since the instruction register
|
|
isn't updated for assisted loads and stores.
|
|
(_tme_sparc_recode_ls_assist_ld): Use tme_sparc_recode_insn_current()
|
|
to get the instruction, and check that the instruction is a load.
|
|
Decode rd from the current instruction, in case it's not the original
|
|
recoded instruction. Zero %g0, in case the load changed it. Do any
|
|
required redispatch after we assisted a nonoriginal load instruction
|
|
(or a load instruction that otherwise requires a redispatch).
|
|
(_tme_sparc_recode_ls_assist_st): Use tme_sparc_recode_insn_current()
|
|
to get the instruction, and check that the instruction is a store.
|
|
|
|
* ic/sparc/sparc-rc-verify.c (tme_sparc_recode_verify_begin): When
|
|
verifying is being turned on, return immediately after calling
|
|
tme_sparc_recode_invalidate_all(), since it will leave the current
|
|
instructions thunk unrunnable. Remember the current instruction TLB
|
|
token.
|
|
(tme_sparc_recode_verify_end): Unbusy any current instruction TLB
|
|
token used by the normal execution. Before the replay begins,
|
|
validate the replay instruction TLB entry When the replay ends, unbusy
|
|
and invalidate the current instruction TLB token.
|
|
Added more structure members to ignore. Before returning to normal
|
|
post instructions thunk handling, rebusy any current instruction TLB
|
|
entry.
|
|
(_tme_sparc_recode_verify_init): Initialize the replay TLB tokens as
|
|
invalid.
|
|
|
|
* ic/sparc/sparc-recode.c (TME_SPARC_RECODE_RW_THUNK_INDEX): Added
|
|
missing parentheses around all of the sparc64 load/store features.
|
|
(tme_sparc_recode): Count recode source hash misses.
|
|
(tme_sparc_recode_init): Mark the temporary registers as temporary.
|
|
Increase the size of the thunks memory.
|
|
|
|
* ic/sparc/stp103x.c (_tme_stp103x_rdasr):
|
|
(_tme_stp103x_wrasr): Don't return the result of a function that
|
|
returns void.
|
|
(_tme_stp103x_ls_address_map_phys): Fixed a bug where we wouldn't map
|
|
a bypass ASI as usable by nonprivileged code.
|
|
(_tme_stp103x_ls_address_map): Fixeds where we wouldn't map an address
|
|
when the MMU is disabled, or when the mapping is unprivileged, as
|
|
usable by both nonprivileged and privileged code.
|
|
(_tme_stp103x_ls_asi_tlb_data_access): Catch an atomic access to a TLB
|
|
data access register. Invalidate any sparc TLB entries when a stp103x
|
|
TLB entry is written.
|
|
(_tme_stp103x_tick_compare_th): Now use tme_gettimeofday().
|
|
|
|
* ic/stp22xx/stp220x.c:
|
|
* ic/stp22xx/stp222x-iommu.c:
|
|
* ic/stp22xx/stp222x-mdu.c:
|
|
* ic/stp22xx/stp222x-stc.c: Silence some unused value warnings.
|
|
|
|
* libtme/misc.c (_tme_misc_number_parse): Fixed a bug where simple
|
|
conversion failure wouldn't return an error.
|
|
(tme_misc_cycles_per_ms): Don't sleep while getting the cycle counter
|
|
rate, because the cycle counter may run at a different rate when we're
|
|
sleeping than when we're running.
|
|
|
|
* libtme/module.c: Undefine lt_preloaded_symbols, in an attempt to be
|
|
forward-compatible with newer libltdls than our libtool knows about.
|
|
|
|
* libtme/recode-impl.h: Declare tme_recode_regs_src_notify().
|
|
|
|
* libtme/recode-regs.c (_tme_recode_regs_src_load):
|
|
(tme_recode_regs_src_specific): Check that a reserved host register
|
|
doesn't have a guest temporary register. After loading a guest
|
|
temporary register, forget that it's in the host register.
|
|
(tme_recode_regs_src_notify): Added.
|
|
|
|
* libtme/threads-sjlj.c: Renamed _tme_sjlj_gtk_yield() to
|
|
tme_sjlj_threads_gtk_yield().
|
|
|
|
* libtme/host/x86/rc-x86-insns.c (_tme_recode_x86_insn_rw): Call
|
|
tme_recode_regs_src_notify() to notify about a possible temporary
|
|
register operand for the address, before calling
|
|
tme_recode_regs_host_clean_all().
|
|
|
|
* libtme/host/x86/rc-x86-rws.c (_tme_recode_x86_rw_tlb_ref): Removed.
|
|
(tme_recode_host_rw_thunk_new): Now use the generic support for recode
|
|
reads and writes, and the x86 generic TLB support.
|
|
|
|
* machine/sun/sun-cgsix.c (_tme_suncg6_bus_cycle_alt): Fixed a bug
|
|
where we wouldn't complete the cycle.
|
|
(tme_sun_cgsix): Added parentheses to silence a paranoid gcc warning
|
|
about programmer operator precedence mistakes.
|
|
|
|
* machine/sun/sun-cgtwo.c: Changed or cast various tme_bus_addr_t to
|
|
tme_bus_addr32_t. Now track tokens from TLB entries instead of TLB
|
|
entries.
|
|
|
|
* machine/sun/sun-fb.c (tme_sunfb_bus_cycle_transition) [NDEBUG]:
|
|
Catch cycle handlers that don't complete the cycle.
|
|
|
|
* machine/sun/sun-obie.c (TME_SUN_OBIE_CSR_GET):
|
|
(TME_SUN_OBIE_CSR_PUT): Rewritten to avoid a pointer cast, to silence
|
|
strict aliasing warnings.
|
|
(_tme_sun_obie_tlb_set_allocate): Removed.
|
|
(_tme_sun_obie_tlb_set_add): Added.
|
|
(_tme_sun_obie_connections_new): Provide _tme_sun_obie_tlb_set_add()
|
|
instead of _tme_sun_obie_tlb_set_allocate().
|
|
|
|
* machine/sun/sun-si.c: Changed or cast various tme_bus_addr_t to
|
|
tme_bus_addr32_t. Now track tokens from TLB entries instead of TLB
|
|
entries.
|
|
(_tme_sun_si_tlb_set_allocate): Removed.
|
|
(_tme_sun_si_tlb_set_add): Added.
|
|
(_tme_sun_si_connections_new): Provide _tme_sun_si_tlb_set_add()
|
|
instead of _tme_sun_si_tlb_set_allocate().
|
|
|
|
* machine/sun4/SUN4-75: Bumped the default idle-type for more recent
|
|
NetBSD.
|
|
|
|
* machine/sun4/sun44c-memerr.c (_tme_sun44c_memerr_cycle_control):
|
|
(_tme_sun44c_memerr_cycle_bus): Changes to remove aliasing.
|
|
|
|
* machine/sun4u/SUN-ULTRA-1: Bumped the revision of the ledma to 2.
|
|
Moved sd0 to id 0.
|
|
|
|
* tme/memory.h (tme_memory_barrier) [TME_THREADS_COOPERATIVE]: Silence
|
|
a possible known-nonzero warning.
|
|
|
|
* tme/threads.h: Declare tme_sjlj_threads_gtk_yield(), and make a
|
|
tme_threads_gtk_yield alias.
|
|
|
|
* tme/token.h (_tme_token_busy_change) [TME_THREADS_COOPERATIVE &&
|
|
defined(TME_NO_DEBUG_LOCKS)]: Silenced a possible known-unzero
|
|
warning.
|
|
|
|
* tme/ic/sparc.h: Define TME_SPARC64_ASI_MASK_USER and
|
|
TME_SPARC64_ASI_MASK_PRIV.
|
|
|
|
Sat Jun 05 14:54:10 2010 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* configure.in: Added a linux x86/mmap recode target. Fixed a bug in
|
|
defining TME_HAVE_RECODE.
|
|
|
|
* bus/multibus/3c400.c (TME_3C400_CSR_GET):
|
|
(TME_3C400_CSR_PUT): Rewritten to avoid a pointer cast, to silence
|
|
strict aliasing warnings.
|
|
|
|
* bus/multibus/sun-mie.c (_tme_sun_mie_bus_cycle_regs): Switched to
|
|
invalidating tokens from TLB entries.
|
|
(_tme_sun_mie_tlb_set_allocate): Removed.
|
|
(_tme_sun_mie_tlb_set_add): Added.
|
|
(_tme_sun_mie_tlb_fill): Truncate the address to 32 bits. Switched to
|
|
tracking tokens from TLB entries.
|
|
(_tme_sun_mie_tlb_fill_regs): Truncate the address to 32 bits.
|
|
(_tme_sun_mie_connections_new): Provide _tme_sun_mie_tlb_set_add()
|
|
instead of _tme_sun_mie_tlb_set_allocate().
|
|
|
|
* bus/multibus/sun-sc.c: In struct tme_sun_sc, store an actual TLB
|
|
entry instead of a pointer to an allocated entry.
|
|
(_tme_sun_sc_bus_cycle_dma): Now take a tme_bus_addr32_t instead of a
|
|
tme_bus_addr_t.
|
|
(_tme_sun_sc_callout): Replaced some tme_bus_addr_t with
|
|
tme_bus_addr32_t. Replaced the call to tme_bus_tlb_back() with a
|
|
plain structure copy.
|
|
(_tme_sun_sc_tlb_fill): Truncate the address to 32 bits.
|
|
(_tme_sun_sc_connection_make_bus): Call tme_bus_device_tlb_set_add()
|
|
to add the TLB entry to the connection.
|
|
|
|
* generic/keyboard.c (_tme_keyboard_buffer_out1_bottom):
|
|
(_tme_keyboard_buffer_out0): Silence some uninitialized structure
|
|
variable warnings.
|
|
|
|
* host/gtk/gtk-display.c (_tme_gtk_display_callout): Call
|
|
tme_threads_gtk_yield(), to make sure that the GTK timeout and idle
|
|
callback are set as needed.
|
|
|
|
* host/posix/posix-disk.c: Define _FILE_OFFSET_BITS to 64 to try to
|
|
enable large-file support.
|
|
|
|
* ic/am7990.c: Replaced various tme_bus_addr_t with tme_bus_addr32_t.
|
|
In struct tme_am7990, store actual TLB entries instead of a pointer to
|
|
allocated entries.
|
|
(_tme_am7990_connection_make_bus): Call tme_bus_device_tlb_set_add()
|
|
to add the TLB entries to the connection.
|
|
|
|
* ic/am9513.c (_tme_am9513_th_timer): Cast what might be a 64-bit
|
|
time_t difference to unsigned long, to match the printf format.
|
|
|
|
* ic/i825x6.c: Replaced various tme_bus_addr_t with tme_bus_addr32_t.
|
|
In struct tme_i825x6, store actual TLB entries instead of a pointer to
|
|
allocated entries.
|
|
(_tme_i825x6_rx_buffers_add): Replaced the call to tme_bus_tlb_back()
|
|
with a plain structure copy.
|
|
(_tme_i825x6_connection_make_bus): Call tme_bus_device_tlb_set_add()
|
|
to add the TLB entries to the connection.
|
|
|
|
* ic/isil7170.c (_tme_isil7170_th_timer): Cast what might be a 64-bit
|
|
time_t difference to unsigned long, to match the printf format.
|
|
|
|
* ic/lsi64854.c: Replaced various tme_bus_addr_t with
|
|
tme_bus_addr32_t. Added support for the ethernet and parallel
|
|
channels.
|
|
(_tme_lsi64854_bus_cycle_regs): Added some support for 8- and 16-bit
|
|
accesses, for the parallel channel.
|
|
(_tme_lsi64854_tlb_set_allocate): Removed.
|
|
(_tme_lsi64854_tlb_set_add): Added.
|
|
|
|
* ic/mk48txx.c (_tme_mk48txx_reset): Fixed a bug where we used
|
|
TME_MK48TXX_SEC_STOP as a register index.
|
|
|
|
* ic/stp22xx/stp222x-timer.c (_tme_stp222x_timer_update): Cast what
|
|
might be a 64-bit time_t difference to unsigned long, to match the
|
|
printf format.
|
|
|
|
* machine/sun4/sun4-timer.c (_tme_sun4_timer_update): Cast what might
|
|
be a 64-bit time_t difference to unsigned long, to match the printf
|
|
format.
|
|
|
|
Sun Mar 07 16:29:27 2010 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* tme/recode.h: Define TME_RECODE_REGINFO_TYPE_TEMPORARY.
|
|
|
|
Sun Feb 21 15:49:42 2010 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* TODO: Updated.
|
|
|
|
Sat Feb 20 22:01:40 2010 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/sparc/sparc-execute.c: After the last replay instruction, make
|
|
sure that the replay current instruction tlb token isn't the invalid
|
|
token.
|
|
|
|
* ic/sparc/sparc-impl.h: Removed an old comment.
|
|
|
|
* ic/sparc/sparc-rc-insns.c: Commented the TME_SPARC_RECODE_INSN_
|
|
values.
|
|
|
|
* ic/sparc/sparc-recode.c (tme_sparc_recode_invalidate_all): Fixed a
|
|
bug where we wouldn't clear the return address stack after
|
|
invalidating all instructions thunks.
|
|
(tme_sparc_recode): When we can't recode, instead of calling only
|
|
_tme_sparc_recode_src_hash_invalidate(), call
|
|
tme_sparc_recode_invalidate_all() to do everything needed when all
|
|
instructions thunks are invalidated.
|
|
|
|
* ic/sparc/sparc-vis-auto.sh (tme_sparc${arch}_vis_ls_asi_pst): Fixed
|
|
a bug where we wouldn't unbusy the TLB entry before trapping for an
|
|
illegal instruction. Any ASI handler that traps directly on its own,
|
|
must do this.
|
|
|
|
* tme/recode.h: Removed the unused tme_recode_reginfo_type macro.
|
|
|
|
Sat Feb 20 18:35:47 2010 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/sparc/sparc-insns-auto.sh (tme_sparc64_casa):
|
|
(tme_sparc64_casxa): Fixed a bug where we would use
|
|
TME_SPARC_FORMAT3_RS2, even if the i bit is set, instead of always
|
|
decoding rs2 like tme_sparc64_atomic() does.
|
|
|
|
* ic/sparc/sparc-misc.c (tme_sparc64_trap): Removed some old debugging
|
|
code.
|
|
|
|
Thu Feb 18 02:01:33 2010 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* TODO: Updated.
|
|
|
|
* ic/sparc/sparc-misc.c (tme_sparc_nnpc_trap): Make a more complete
|
|
dummy load/store structure.
|
|
|
|
* tme/common.h: Fixed old bugs where tme_value64_uint32_lo and
|
|
tme_value64_uint32_hi were defined to be signed.
|
|
Define tme_value64_cmp().
|
|
|
|
Mon Feb 15 22:23:15 2010 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* libtme/recode-regs.c (tme_recode_regs_host_clean_all): Now that a
|
|
host register can be clean at any size, instead of freeing a host
|
|
register that was dirty not at the full guest register size, just mark
|
|
it as clean.
|
|
(_tme_recode_regs_src_load): As an optimization, if the read-uses
|
|
count for the guest register is only one, only load the size that this
|
|
instruction needs.
|
|
(tme_recode_regs_dst_any):
|
|
(tme_recode_regs_dst_specific): Replaced
|
|
TME_RECODE_REGINFO_TAGS_DIRTY_SIZE() with
|
|
TME_RECODE_REGINFO_TAGS_VALID_SIZE().
|
|
|
|
* libtme/host/x86/rc-x86-chain.c (_tme_recode_x86_chain_subs): Use
|
|
TME_RECODE_REGINFO_TAGS_VALID_SIZE() and TME_RECODE_REGINFO_TAGS_CLEAN
|
|
in the fake register information for loading the guest PC.
|
|
|
|
* libtme/host/x86/rc-x86-flags.c (tme_recode_host_flags_thunk_add):
|
|
Use TME_RECODE_REGINFO_TAGS_VALID_SIZE() in the fake register
|
|
information for the subs operands.
|
|
|
|
* libtme/host/x86/rc-x86-regs.c (tme_recode_host_reg_move): For both
|
|
loading and storing, get the size to move using
|
|
TME_RECODE_REGINFO_TAGS_WHICH_VALID_SIZE().
|
|
(tme_recode_host_reg_imm): As an optimization, only make as big an
|
|
immediate as the instruction needs.
|
|
|
|
* machine/sun/sun-mmu.c: Define TME_SUN_MMU_CONTEXT_TLBS. In struct
|
|
tme_sun_mmu_tlb_set, replaced the TLB set information with a struct
|
|
tme_bus_tlb_set_info.
|
|
In struct tme_sun_mmu, track a set of TLBs that must be invalidated
|
|
when the context changes.
|
|
Changed from tracking pointers to TLB entries to tracking pointers to
|
|
their tokens.
|
|
(tme_sun_mmu_tlbs_invalidate): Use tme_bus_tlb_set_invalidate() to
|
|
invalidate a TLB set.
|
|
(tme_sun_mmu_tlbs_context_set):
|
|
(tme_sun_mmu_tlb_set_allocate): Removed.
|
|
(tme_sun_mmu_context_add):
|
|
(tme_sun_mmu_context_switched):
|
|
(tme_sun_mmu_tlb_set_add): Added.
|
|
|
|
* tme/recode.h: Replaced TME_RECODE_REGINFO_TAGS_DIRTY_SIZE_MASK,
|
|
which was nonzero iff the host register was dirty, with
|
|
TME_RECODE_REGINFO_TAGS_VALID_SIZE_MASK, which is nonzero iff the tags
|
|
are valid.
|
|
Changed the value of TME_RECODE_REGINFO_TAGS_CLEAN to be right before
|
|
TME_RECODE_REGINFO_TAGS_VALID_SIZE_MASK, to enable the changed
|
|
TME_RECODE_REGINFO_TAGS_WHICH_DIRTY_SIZE(). Renamed
|
|
TME_RECODE_REGINFO_TAGS_VALID_SIZE() to
|
|
TME_RECODE_REGINFO_TAGS_ARE_VALID_SIZE(), all callers changed. Added
|
|
TME_RECODE_REGINFO_TAGS_WHICH_VALID_SIZE(). Changed
|
|
TME_RECODE_REGINFO_TAGS_WHICH_DIRTY_SIZE() and
|
|
TME_RECODE_REGINFO_TAGS_ARE_DIRTY() to use the new
|
|
TME_RECODE_REGINFO_TAGS_VALID_SIZE_MASK and
|
|
TME_RECODE_REGINFO_TAGS_CLEAN. Added the new
|
|
TME_RECODE_REGINFO_TAGS_VALID_SIZE().
|
|
|
|
Mon Feb 15 16:57:13 2010 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/stp22xx/stp222x-mdu.c (tme_stp222x_mdu_regs_clear): Added a
|
|
performance hack to dispatch any waiting interrupt to the CPU clearing
|
|
an interrupt's pending state.
|
|
|
|
* libtme/memory-auto.sh (_tme_memory_write): Added an explicit cast to
|
|
type_part, to silence compiler warnings when we're writing a constant
|
|
wider than type_part.
|
|
(tme_memory_bus_${op}_buffer): Fixed some ${op_const} to
|
|
${op_const_mem}, to silence lost-qualifier warnings.
|
|
(tme_memory_atomic_${op}${size}): When threads are cooperative, do the
|
|
read or write using the plain macro.
|
|
|
|
* libtme/recode-rws.c (tme_recode_rw_thunk): Many address type values
|
|
that used to be plain in the read/write structure moved to an address
|
|
type structure. Use tme_recode_address_type_check() to check the
|
|
read/write address type, and tme_recode_address_type_compare() to
|
|
compare it to an existing thunk's address type.
|
|
|
|
* libtme/threads-sjlj.c: Removed TME_SJLJ_DISPATCHER_FALSE and
|
|
TME_SJLJ_DISPATCHER_TRUE, since the thread dispatcher no longer
|
|
returns any value. In struct tme_sjlj_thread, added the last dispatch
|
|
number for a thread, and under HAVE_GTK, no longer track timeout
|
|
handles. Removed tme_sjlj_thread_dispatched_timeout. Define globals
|
|
for the global dispatch number, the reasonably current time, and the
|
|
short thread flag. Under HAVE_GTK, define globals for the timeout
|
|
source ID and the current timeout time.
|
|
(tme_sjlj_gettimeofday): Added.
|
|
(_tme_sjlj_change_state): Add a not-blocked thread next on the
|
|
dispatching list if threads are being dispatched, and this thread
|
|
wasn't already in this dispatch.
|
|
(_tme_sjlj_threads_dispatching_runnable):
|
|
(_tme_sjlj_threads_dispatching_timeout):
|
|
(_tme_sjlj_timeout_time): Added.
|
|
(tme_sjlj_dispatch_fd): Removed.
|
|
(_tme_sjlj_threads_dispatching_fd): Added to replace
|
|
tme_sjlj_dispatch_fd().
|
|
(tme_sjlj_dispatch): Return no value, and don't expect
|
|
tme_sjlj_yield() to return any value via longjmp(). Before
|
|
dispatching a thread, remove it from the timeout list if needed, and
|
|
set its dispatch number. After a dispatch, increment the global
|
|
dispatch number.
|
|
(_tme_sjlj_gtk_callback_timeout):
|
|
(_tme_sjlj_gtk_callback_fd):
|
|
(_tme_sjlj_gtk_callback_idle):
|
|
(_tme_sjlj_gtk_yield): Added.
|
|
(tme_sjlj_threads_run): If we're using the GTK main loop, do an
|
|
initial _tme_sjlj_gtk_yield() instead of adding an idle directly. In
|
|
our main loop, removed the code that sorted the timeout list, now that
|
|
tme_sjlj_yield() inserts a thread at the right place on the list. Use
|
|
_tme_sjlj_timeout_time() to get the timeout time. After the select(),
|
|
use _tme_sjlj_threads_dispatching_runnable(),
|
|
_tme_sjlj_threads_dispatching_timeout() and
|
|
_tme_sjlj_threads_dispatching_fd() to build the dispatching list, and
|
|
tme_sjlj_dispatch() to dispatch them all.
|
|
(tme_sjlj_thread_create): Initialize the thread's dispatch number.
|
|
(tme_sjlj_cond_notify): Always call _tme_sjlj_change_state with
|
|
TME_SJLJ_THREAD_STATE_RUNNING (only the dispatch functions can use
|
|
TME_SJLJ_THREAD_STATE_DISPATCHING).
|
|
(tme_sjlj_yield): Don't return any value through longjmp(). Under
|
|
HAVE_GTK, don't do any GTK timeout allocation. Insert a thread with a
|
|
timeout at the right spot on the timeout list.
|
|
(tme_sjlj_sleep): Use tme_thread_long() to mark long runs, and
|
|
tme_gettimeofday() to get the current time. Fixed a bug where the
|
|
first timeout would be undefined.
|
|
(tme_sjlj_select_yield): Use tme_thread_long() to mark a long run.
|
|
|
|
* libtme/host/x86/rc-x86-insns.c (_tme_recode_x86_insn_guest): Added
|
|
support for TME_RECODE_OPERAND_UNDEF source operands. Fixed a bug in
|
|
the x86-64 double-host-size where we would load the first source
|
|
operand for the second.
|
|
|
|
* libtme/host/x86/rc-x86-rws.c (tme_recode_host_rw_thunk_new): Get
|
|
parameters from the new address type structure in the read/write
|
|
structure, instead of directly from the read/write structure or the ic
|
|
structure.
|
|
|
|
Mon Feb 15 14:58:58 2010 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* acinclude.m4: Quote all of the AC_DEFUN macro names.
|
|
* configure.in: When long is 64 bits, check for the maximum shift of a
|
|
64-bit value, whether or not right shifts of signed 64-bit values are
|
|
arithmetic, and for bswap64().
|
|
Updated to the AM_PATH_GTK_2_0() macro. When long is 64 bits or the
|
|
compiler is gcc, add sunultra1 to the systems list.
|
|
Define bus_size_max and recode_size_guest_max from values from each
|
|
system to build.
|
|
Added sunultra1.
|
|
Added some missing $srcdir to paths. Added the --enable-recode
|
|
option, and configure recode support. Configure miscellaneous target
|
|
support. Generate tme/recode-host.h, libtme/recode-host.c, and
|
|
libtme/misc-host.c. Added more Makefiles to the AC_OUTPUT().
|
|
|
|
Sun Feb 14 20:17:12 2010 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/sparc/sparc-execute.c:
|
|
* ic/sparc/sparc-rc-ls.c: Switched from the old TME_RECODE_RW_FLAG and
|
|
TME_SPARC_RECODE_RW_FLAG_ names to the new TME_RECODE_TLB_FLAG and
|
|
TME_SPARC_RECODE_TLB_FLAG_ names.
|
|
|
|
* ic/sparc/sparc-fpu.c [TME_HAVE_INT64_T]: Include sparc-vis-auto.c.
|
|
(tme_sparc_fpu_exception_check): Use the per-architecture fp_exception
|
|
trap.
|
|
(tme_sparc32_stdfq): Use TME_SPARC_INSN_FPU_ENABLED() instead of
|
|
TME_SPARC_INSN_FPU_STORE(), which might mem_address_not_aligned trap
|
|
before the fp_exception, which is the wrong order on a v9 CPU. This
|
|
function needs to be corrected for any CPU that actually implements
|
|
the FQ.
|
|
(tme_sparc_fpu_fpreg_aligned): Removed.
|
|
(tme_sparc_fpu_fpreg_decode): Added, as a replacement for
|
|
tme_sparc_fpu_fpreg_aligned().
|
|
(tme_sparc_fpu_fpreg_format): Our caller is now expected to make sure
|
|
the register is aligned.
|
|
(tme_sparc_fpu_fpreg_read): Don't use TME_FIELD_MASK_EXTRACTU with a
|
|
variable mask. Use tme_sparc_fpu_fpreg_decode() to decode the
|
|
register number.
|
|
|
|
* ic/sparc/sparc-impl.h: Switched from the old TME_RECODE_RW_FLAG()
|
|
and TME_SPARC_RECODE_RW_FLAG_ names to the new TME_RECODE_TLB_FLAG()
|
|
and TME_SPARC_RECODE_TLB_FLAG_ names.
|
|
|
|
* ic/sparc/sparc-misc.c:
|
|
* ic/sparc/sparc-rc-verify.c: Switched from the old
|
|
tme_sparc_dtlb_recode_tlb names to the new tme_sparc_recode_tlb names.
|
|
|
|
* ic/sparc/sparc-rc-ls.c (tme_sparc_recode_ls_tlb_update): The DTLB
|
|
array is really a single TLB array with the ITLB entries. The recode
|
|
TLB entries' read/write flags were renamed to just (TLB) flags.
|
|
(_tme_sparc_recode_ls_init): Set the members of the new address type
|
|
structure in the read/write structure. Many of them used to be plain
|
|
in the read/write structure.
|
|
|
|
Sun Feb 14 18:08:02 2010 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/sparc/cy7c601.c (tme_ic_,sparc,cy7c601): Call
|
|
tme_sparc_sync_init() and set the tme_sparc_timing_loop_cycles_each
|
|
value.
|
|
|
|
* ic/sparc/mb86900.c (tme_ic_,sparc,mb86900): Call
|
|
tme_sparc_sync_init() and set the tme_sparc_timing_loop_cycles_each
|
|
value.
|
|
|
|
* ic/sparc/sparc-execute.c: Set the recode chain TLB flags mask.
|
|
Manage a pointer to the token for current instruction TLB entry,
|
|
instead of the current instruction TLB entry itself, because that's
|
|
what the recode instruction thunks do. On a branch to ., truncate the
|
|
instruction burst to get to the code that handles a branch to . as a
|
|
timing loop or an idle. At the end of an instruction burst, possibly
|
|
update the instruction burst runlength, and if the next instruction
|
|
will be annulled, loop to handle it now. Clear the instruction burst
|
|
other flag if this will be a normal burst, otherwise set it for an
|
|
idle burst. When updating PC_next_next on a v9 CPU, mask it with the
|
|
address mask.
|
|
[TME_SPARC_HAVE_RECODE()]: Removed the source key offset.
|
|
tme_recode_insns_thunk_run() now takes a chain thunk. When recode
|
|
thunks return, switch to the invalid instruction TLB entry.
|
|
|
|
* ic/sparc/sparc-impl.h: Include <tme/runlength.h>.
|
|
Define TME_SPARC64_TICK_NPT and TME_SPARC64_TICK_COUNTER. Added
|
|
support for the sunos64-type-0 idle type.
|
|
(TME_SPARC_IDLE_MARK): Flag the instruction burst as shortened.
|
|
Define TME_SPARC_MODE_TIMING_LOOP.
|
|
[!TME_HAVE_RECODE]: Removed old arguments from
|
|
_TME_SPARC_RECODE_CWP_UPDATE.
|
|
Define different versions of TME_SPARC_HAVE_RECODE() that avoid using
|
|
TME_SPARC_VERSION(ic) whenever possible. Define
|
|
TME_SPARC_RECODE_TLB_FLAG_CHAIN_USER() and
|
|
TME_SPARC_RECODE_TLB_FLAG_CHAIN_PRIV(). Define the
|
|
TME_SPARC_EXTERNAL_CHECK_ macros. Define tme_sparc_ireg_umax_t.
|
|
In struct tme_sparc, added the number of scaled cycles per
|
|
microsecond, the runlength state and its update state, get the
|
|
instruciton burst from the runlength state, track the token of any
|
|
currently busy instruction TLB entry, added the address mask, added
|
|
the timing information, the current chain TLB flags, the chain return
|
|
address stack, removed the chain cacheable and source key offset,
|
|
added the instructions group structure. Declare
|
|
tme_sparc_sync_init(), tme_sparc_itlb_current(),
|
|
tme_sparc_insn_peek(), the timing support functions, the chain TLB
|
|
update functions, and tme_sparc_recode_verify_end_preinstruction().
|
|
Now define the verify no-operation macros even if TME_HAVE_RECODE is
|
|
zero.
|
|
|
|
* ic/sparc/sparc-insns-auto.sh: Instead of testing for PSTATE.AM,
|
|
always mask sparc64 addresses with ic->tme_sparc_address_mask.
|
|
(tme_sparc${arch}_${slow}): Set ic->_tme_sparc_instruction_burst_other
|
|
to flag the shortened burst.
|
|
(tme_sparc${arch}_ls): Even when the ASI has not been specified, the
|
|
instruction may provide ASI flags, so add them in. Call
|
|
tme_sparc${arch}_recode_chain_tlb_update() to update a recode
|
|
instruction TLB entry.
|
|
Don't assert that the mapping made a mapping until after checking
|
|
whether or not it completed the transfer.
|
|
|
|
* ic/sparc/sparc-insns.c (tme_sparc32_wrpsr): Set
|
|
ic->_tme_sparc_instruction_burst_other to flag the shortened
|
|
instruction burst.
|
|
(tme_sparc64_return):
|
|
(tme_sparc64_done_retry): Instead of testing for PSTATE.AM, always
|
|
mask sparc64 addresses with ic->tme_sparc_address_mask.
|
|
(tme_sparc64_rdpr):
|
|
(tme_sparc64_rdasr): Mask the scaled cycles counter to fit in
|
|
TICK.COUNTER, and or in TICK.NPT if needed.
|
|
(_tme_sparc64_idle_type_sunos64_type_0_splhigh): Added.
|
|
(tme_sparc64_wrpr): Handle TICK.NPT and the TICK.COUNTER offset
|
|
separately.
|
|
Fixed a bug where we wouldn't redispatch after a write to PSTATE. To
|
|
improve interrupt latency, do an interrupt check before raising PIL,
|
|
and after lowering it.
|
|
Added support for detecting the sunos64-type-0 idle type.
|
|
|
|
* ic/sparc/sparc-misc.c: Replaced uses of the _tme_sparc_itlb_busy
|
|
member with either _tme_sparc_itlb_current_token and the token
|
|
functions, or a call to tme_sparc_itlb_current().
|
|
(tme_sparc_idle): Call the external check function with
|
|
TME_SPARC_EXTERNAL_CHECK_MUTEX_LOCKED.
|
|
(tme_sparc_thread): When entering execution mode, if this instruction
|
|
burst will be used to update the runlength, note its start time.
|
|
Added support for the timing loop mode.
|
|
(_tme_sparc_command): Added the sunos64-type-0 idle type.
|
|
(tme_sparc_sync_init): Added.
|
|
(tme_sparc_new): For the timing loop code, initialize
|
|
ic->tme_sparc_cycles_unscaling. Initialize the instruction burst
|
|
runlength state.
|
|
(tme_sparc_do_idle): Set ic->_tme_sparc_instruction_burst_other to
|
|
flag the shortened instruction burst.
|
|
(tme_sparc32_external_check): Now take flags instead of a boolean.
|
|
(tme_sparc64_trap): Reset TICK.NPT and TICK.counter separately. Also
|
|
reset TICK.counter on an XIR.
|
|
(tme_sparc_itlb_current):
|
|
(tme_sparc_insn_peek): Added.
|
|
(tme_sparc_fetch_nearby): Call tme_sparc_insn_peek() to do the peek.
|
|
(tme_sparc_callout_relock): If we need to do an external check,
|
|
shorten the current instruction burst to do one immediately.
|
|
|
|
* ic/sparc/sparc-rc-chain.c: Removed some accidentally committed
|
|
AUDITs.
|
|
|
|
* ic/sparc/sparc-rc-insns.c: Replaced the TME_SPARC_RECODE_INSN_JUMP_
|
|
macros with TME_SPARC_RECODE_CHAIN_INFO() used with the
|
|
TME_RECODE_CHAIN_INFO_ macros.
|
|
(tme_sparc_recode_insn_assist_redispatch): Use
|
|
_tme_sparc_recode_chain_src_key() to check if the current PC is still
|
|
cache-valid.
|
|
(_tme_sparc_recode_insn_assist_jmpl): Added.
|
|
(_tme_sparc_recode_recode): Added support for PSTATE.AM, mostly by
|
|
doing PC calculations in that address size. Be sure to not recode the
|
|
last instruction before tme_sparc_ireg_t wraps to zero.
|
|
Fixed jmpl recoding to call the assist function to check for traps, to
|
|
try to characterize a jmpl as a call or a return, and to better write
|
|
the PC of the jmpl into any destination register. Mark each chain
|
|
jump as either near or far. When recoding a call instruction, if the
|
|
PC is not the guest size, zero-extend r[15] after the PC has been
|
|
copied into it. Also use r[15] as the source for advancing PC to the
|
|
branch delay slot, for better host register allocation. Mark each
|
|
chain call as either near or far.
|
|
When an instruction needs a full assist, the source operands aren't
|
|
used, so make them the recode %undef. If there is no chain
|
|
information at the end of an instructions group, make unconditional
|
|
jump information. If the chain information is conditional, mark the
|
|
alternate as either near or far. Store the end of the instructions
|
|
and the chain information in the instructions group.
|
|
|
|
* ic/sparc/sparc-rc-verify.c: Removed
|
|
_tme_sparc_recode_verify_ic_replay_token.
|
|
(_tme_sparc_recode_verify_change): Renamed the read/write flags to
|
|
just TLB flags.
|
|
(tme_sparc_recode_verify_begin): Use tme_sparc_itlb_current() to get
|
|
the current TLB entry. Preserve the token pointer when initializing
|
|
the current TLB entry in the replay state. Fix
|
|
_tme_sparc_itlb_current_token in the saved in state. Force the
|
|
instruction burst size to two in the in state.
|
|
(tme_sparc_recode_verify_end): Use tme_sparc_itlb_current() to get the
|
|
current TLB entry. Set _tme_sparc_itlb_current_token instead of
|
|
_tme_sparc_itlb_busy.
|
|
(tme_sparc_recode_insns_dump): Check _tme_sparc_itlb_current_token
|
|
instead of _tme_sparc_itlb_busy. Call
|
|
_tme_sparc_recode_chain_src_key() to get the source key.
|
|
(_tme_sparc_recode_verify_init): Initialize and set tokens on all
|
|
replay TLB entries.
|
|
|
|
* ic/sparc/sparc-recode.c: Define TME_SPARC_RECODE_SRC_KEY_UNDEF,
|
|
TME_SPARC64_RECODE_SRC_KEY_FLAG_AM and
|
|
TME_SPARC64_RECODE_SRC_KEY_FLAG_CLE. Include sparc-rc-chain.c for
|
|
each architecture.
|
|
(_tme_sparc_recode_src_hash_invalidate): Use
|
|
TME_SPARC_RECODE_SRC_KEY_UNDEF for an invalidated source key. If an
|
|
invalidated source key has an instructions thunk, invalidate it, to
|
|
make sure that no other instruction thunk can chain to it.
|
|
(_tme_sparc_recode_jump_chain): Removed.
|
|
(tme_sparc_recode): Set the instructions group host source address.
|
|
On a v9 CPU, add PSTATE.AM and PSTATE.CLE to the source address key.
|
|
Set the instructions group valid byte and mask. Check for
|
|
TME_SPARC_RECODE_SRC_KEY_UNDEF for an invalidated source key, since
|
|
valid source keys may now be nonzero mod sizeof(tme_uint32_t).
|
|
(tme_sparc_recode_dump_insns): Don't take the recode instructions
|
|
array, since it can be found in the struct tme_sparc recode
|
|
instructions group. Replaced the TME_RECODE_OPCODE_JUMP dump with a
|
|
TME_RECODE_CHAIN_INFO_ dump. Added support for
|
|
TME_RECODE_OPERAND_UNDEF.
|
|
(tme_sparc_recode_init): Removed address translation and jump chain
|
|
member initialization. These are now given in address type structures
|
|
by _tme_sparc_recode_ls_init() and _tme_sparc_recode_chain_init().
|
|
Set the first instruction in the instructions group. Call the
|
|
_tme_sparc_recode_chain_init() for this architecture.
|
|
|
|
* ic/sparc/sparc-timing.c: Replaced uses of the _tme_sparc_itlb_busy
|
|
member with _tme_sparc_itlb_current_token and the token functions.
|
|
(tme_sparc_timing_loop_finish): Flag the shortened instruction burst.
|
|
|
|
* ic/sparc/stp103x.c: Define TME_STP103X_TCR_INT_DIS and
|
|
TME_STP103X_TCR_TICK_CMPR. In struct tme_stp103x, added the tick
|
|
compare condition and time.
|
|
(tme_misc_timeval_never): Added, although this should be moved.
|
|
(_tme_stp103x_interrupt_check): Take a mask of flags, instead of a
|
|
boolean. All callers changed. Added support for
|
|
TME_SPARC_EXTERNAL_CHECK_PCS_UPDATED.
|
|
(_tme_stp103x_update_sir): Now take and-not and or masks for SIR. All
|
|
callers changed.
|
|
Before clearing SIR.TICK_INT, to help TICK interrupt latency, do an
|
|
interrupt check, backing up the PCs to the previous instruction if a
|
|
tick interrupt should have been delivered.
|
|
(_tme_stp103x_update_pstate): Make sure %g0 is zero in both the normal
|
|
global register set and the current global register set. When there
|
|
is recode support, if PSTATE.AM and/or PSTATE.CLE are changing, clear
|
|
the return address stack. Update the address mask according to
|
|
PSTATE.AM, and mask the new PCs with it.
|
|
(_tme_stp103x_rdpr): Use tme_sparc_itlb_current() instead of
|
|
ic->_tme_sparc_itlb_busy. Don't use return() with a void value.
|
|
(_tme_stp103x_wrasr): Update the tick compare thread on a write to
|
|
TCR.
|
|
(_tme_stp103x_flush): Always mask the address. Since the default ASI
|
|
may not be the unrestricted ASI, and the nucleus ASI can't be modified
|
|
with ASI flags, instead of giving an explicit ASI, specify the
|
|
no-fault ASI flag in the load/store information.
|
|
(_tme_stp103x_ls_trap): Added support for TME_SPARC_LSINFO_NO_FAULT.
|
|
(_tme_stp103x_ls_address_map): If _tme_stp103x_ls_trap() ever returns,
|
|
check for TME_SPARC_LSINFO_NO_FAULT and return, instead of aborting.
|
|
(_tme_stp103x_tick_compare_th): Added.
|
|
(_tme_stp103x_external_check): Take a mask of flags, instead of a
|
|
boolean. All callers changed.
|
|
(_tme_stp103x_interrupt): Added a missed wakeup on the external
|
|
condition.
|
|
(_tme_stp103x_new): Call tme_sparc_sync_init(). Initialize the tick
|
|
compare thread state, and start the tick compare thread. Initialize
|
|
ic->tme_sparc_timing_loop_cycles_each.
|
|
|
|
Sun Feb 14 00:48:04 2010 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/sparc/sparc-misc-auto.sh: Renamed tme_sparc64_ireg_tick to
|
|
tme_sparc64_ireg_tick_offset, and added the separate
|
|
tme_sparc64_ireg_tick_npt.
|
|
|
|
* serial/ms-mssystems.c (_tme_serial_ms_mssystems5_init): Set the
|
|
rate-limiting based on the baud rate and the packet size.
|
|
|
|
* serial/serial-ms.c: _tme_serial_ms_callout): Added support for
|
|
rate-limiting reading events.
|
|
(_tme_serial_ms_th_rate): Added.
|
|
(tme_serial_,kb,mouse): Start the rate-limiting thread.
|
|
|
|
* serial/serial-ms.h: In struct tme_serial_ms, added members for
|
|
rate-limiting serial data.
|
|
|
|
Thu Feb 11 00:15:55 2010 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* tme/recode.h: Define TME_RECODE_OPERAND_UNDEF.
|
|
|
|
Wed Feb 10 00:34:26 2010 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* libtme/host/x86/rc-x86-regs.c (tme_recode_host_reg_imm): When the
|
|
most significant half of a double-host-size immediate is zero, emit an
|
|
xorl to clear the second register, instead of a mov of zero.
|
|
|
|
Tue Feb 09 01:27:56 2010 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* libtme/recode-regs.c (tme_recode_regs_host_reserve): Assert that
|
|
there is a reservation array entry free.
|
|
(_tme_recode_regs_src_load): Fixed a bug where we didn't handle the
|
|
case where the host register was already reserved, and would instead
|
|
decrement the reserved read-uses count.
|
|
|
|
Sun Feb 07 17:32:01 2010 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* libtme/recode-impl.h: Define struct tme_recode_tlb_type.
|
|
tme_recode_host_insns_thunk_new() now takes an instructions group,
|
|
instead of pointers to the array of instructions. Declare
|
|
tme_recode_address_type_check(), tme_recode_address_type_compare(),
|
|
and tme_recode_address_type_tlb_type().
|
|
|
|
* libtme/recode-insns.c (tme_recode_insns_thunk): Now take a
|
|
instructions group structure, instead of pointers to the instructions
|
|
array. All callers changed. Removed the TME_RECODE_OPCODE_JUMP
|
|
support.
|
|
|
|
* libtme/host/x86/rc-x86-insns.c (_tme_recode_x86_insn_jump):
|
|
(tme_recode_insn_jump_chain): Removed.
|
|
(_tme_recode_x86_insn_emit): When emitting an extension instruction,
|
|
fixed a performance bug where we would load the source operand at the
|
|
destination size, instead of at the extension's source operand size.
|
|
Removed the TME_RECODE_OPCODE_JUMP support.
|
|
(tme_recode_insns_thunk_invalidate): Added.
|
|
(tme_recode_host_insns_thunk_new): Call _tme_recode_x86_chain_in() and
|
|
_tme_recode_x86_chain_out() to emit the chain in and chain out
|
|
instructions, instead of emitting a jump to the instructions prologue.
|
|
Get the instructions array from the instructions group structure.
|
|
|
|
* libtme/host/x86/recode-x86.c: Define TME_RECODE_X86_OPCODE_PUSH_Ib
|
|
and TME_RECODE_X86_OPCODE_BINOP_Iz_A. Define
|
|
TME_RECODE_X86_EA_BASE_IP. Remove
|
|
TME_RECODE_X86_OFFSET_JUMP_CHAIN_DIRECT.
|
|
(_tme_recode_x86_emit_jmp):
|
|
(_tme_recode_x86_fixup_jmp): Added.
|
|
(tme_recode_host_ic_new): Removed the code that emitted the
|
|
instructions thunk prologue, epilogue, jump subs and jump chain subs.
|
|
Call _tme_recode_x86_chain_epilogue() to make the instructions thunk
|
|
epilogue.
|
|
|
|
* tme/Makefile.am: Added runlength.h to pkginclude_HEADERS.
|
|
|
|
* tme/recode.h: Removed TME_RECODE_OPCODE_JUMP. Replaced the
|
|
TME_RECODE_JUMP_ macros with the TME_RECODE_CHAIN_INFO_ macros.
|
|
(TME_RECODE_INSNS_THUNK_INSNS_MAX): Account for
|
|
TME_RECODE_HOST_INSN_THUNK_OVERHEAD. In the TLB entry structures,
|
|
renamed all of the read/write flags to just (TLB) flags.
|
|
Define struct tme_recode_address_type. In struct tme_recode_rw,
|
|
replaced the address type members with an address type structure.
|
|
Define struct tme_recode_chain_thunk. Define struct
|
|
tme_recode_insns_group. In struct tme_recode_ic, removed the members
|
|
that are now included in the address type structure in a struct
|
|
tme_recode_rw. Replaced the tme_recode_ic_jump_chain member with the
|
|
tme_recode_ic_chain_fixup member. Renamed tme_recode_ic_jump_counter
|
|
to tme_recode_ic_chain_counter_offset. Added members for the chain
|
|
return address stack and the current instruction TLB entry token
|
|
offset. Declare tme_recode_chain_ras_clear(),
|
|
tme_recode_chain_thunk(), tme_recode_chain_fixup(), and
|
|
tme_recode_insns_thunk_invalidate(). tme_recode_insns_thunk() now
|
|
takes an instructions group, instead of pointers to the array of
|
|
instructions.
|
|
[TME_RECODE_DEBUG]: Declare tme_recode_chain_thunk_dump().
|
|
|
|
* tme/threads.h: Declare tme_sjlj_gettimeofday(), and alias
|
|
tme_gettimeofday to it. Declare tme_sjlj_thread_short. Define
|
|
tme_thread_long().
|
|
|
|
* tme/host/recode-x86.h: Define TME_RECODE_X86_CHAIN_IN_SIZE_MAX and
|
|
TME_RECODE_X86_CHAIN_OUT_SIZE_MAX, and use them to define
|
|
TME_RECODE_HOST_INSN_THUNK_OVERHEAD. Define
|
|
TME_RECODE_HOST_CHAIN_THUNK. In TME_RECODE_X86_IC, renamed
|
|
tme_recode_x86_ic_insns_prologue to tme_recode_x86_ic_chain_epilogue.
|
|
Removed tme_recode_x86_ic_insns_epilogue, tme_recode_x86_ic_subs_jump,
|
|
and tme_recode_x86_ic_subs_jump_chain. Added
|
|
tme_recode_x86_ic_chain_fixup_target.
|
|
(tme_recode_insns_thunk_run): Now takes a chain thunk instead of the
|
|
recode IC, all callers changed. Renamed the TME_RECODE_RW_FLAG macros
|
|
to TME_RECODE_TLB_FLAG macros. Define the tme_recode_ras_entry_t
|
|
type.
|
|
|
|
Sun Feb 07 16:51:53 2010 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* generic/mouse.c (_tme_mouse_deltas_opposite): Added.
|
|
(tme_mouse_buffer_copyin): If the new event can be merged with the
|
|
previous new event, merge them.
|
|
|
|
* libtme/Makefile.am: Added SUBDIRS.
|
|
In libtme_la_SOURCES, replaced misc.c with misc-host.c, and added the
|
|
machine independent recode sources and token.c and runlength.c.
|
|
Added misc.c to EXTRA_DIST.
|
|
|
|
* libtme/kgdb.c libtme/recode-address.c libtme/runlength.c
|
|
tme/runlength.h tools/stp103x-tlbs.pl tools/sun4u_58-find-module.pl
|
|
tools/tme-log-binary-dump-calls-traps.pl
|
|
tools/tme-toolchain-wrapper.pl:
|
|
|
|
Added.
|
|
|
|
* libtme/recode-ic.c (tme_recode_opcode_dump): Removed
|
|
TME_RECODE_OPCODE_JUMP.
|
|
|
|
* libtme/host/x86/Makefile.am: Added rc-x86-tlb.c and rc-x86-chain.c
|
|
to EXTRA_DIST.
|
|
|
|
* libtme/host/x86/rc-x86-chain.c: Fixed many bugs where
|
|
TME_RECODE_X86_MOD_RM_EA_DISP32() was used with
|
|
TME_RECODE_X86_EA_BASE_IP.
|
|
Split TME_RECODE_X86_CHAIN_RETURN_ADDRESS() into separate definitions
|
|
for ia32 and x86-64 hosts, because the ia32 expression gets a pointer
|
|
cast size warning on x86-64.
|
|
(_tme_recode_x86_chain_in): Explicitly cast a value being stored into
|
|
a tme_uint8_t, to tme_uint8_t, to avoid a warning when this value is a
|
|
16-bit constant. Fixed a bug where we added two rex prefixes
|
|
together.
|
|
(_tme_recode_x86_chain_prologue): Fixed an assert.
|
|
|
|
Fri Feb 05 01:06:01 2010 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/sparc/Makefile.am: Added sparc-rc-chain.c to EXTRA_DIST.
|
|
* ic/sparc/sparc-rc-chain.c: Added.
|
|
|
|
Fri Jan 15 03:05:59 2010 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* libtme/host/x86/rc-x86-chain.c:
|
|
* libtme/host/x86/rc-x86-tlb.c: Added.
|
|
|
|
Sun Nov 08 17:35:49 2009 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* host/posix/posix-disk.c (_tme_posix_disk_buffer_free):
|
|
(_tme_posix_disk_open):
|
|
(_tme_posix_disk_close):
|
|
(__tme_posix_disk_command):
|
|
(_tme_posix_disk_command): Added.
|
|
(_tme_posix_disk_buffer_get): Now use _tme_posix_disk_buffer_free() to
|
|
free a buffer.
|
|
(tme_host_posix,disk): Now use _tme_posix_disk_open() to open the disk
|
|
image and set our command function on the element.
|
|
|
|
* ic/stp2024.c: Corrected all of the audio codec and DMA register
|
|
offsets.
|
|
|
|
* ic/sparc/Makefile.am: Added sparc-timing.c to
|
|
tme_ic_sparc_la_SOURCES.
|
|
|
|
* ic/sparc/sparc-fpu-auto.sh: Fixed a bug where FsMULd was doing a
|
|
single-precision multiply.
|
|
|
|
* ic/sparc/sparc-rc-ls.c (_tme_sparc_recode_ls_assist_check): On a v9
|
|
CPU, mask the addresses.
|
|
|
|
* ic/sparc/sparc-rc-verify.c (tme_sparc_recode_verify_end_preinstruction):
|
|
Added.
|
|
(tme_sparc_recode_verify_end): Added support for
|
|
TME_SPARC_RECODE_VERIFY_PC_NONE.
|
|
(tme_sparc_recode_insns_dump): Fixed the suggested prints for the case
|
|
where TME_SPARC_RECODE_SRC_HASH_SIZE_ELEMENT is not one.
|
|
|
|
* ic/sparc/sparc-timing.c (_tme_sparc_timing_loop_start): Corrected
|
|
the comment about the state of the PCs.
|
|
(tme_sparc_timing_loop_assist): Now call
|
|
tme_sparc_recode_verify_end_preinstruction().
|
|
|
|
* ic/sparc/sparc-vis-auto.sh: Added support for the
|
|
FCMP{GT,LE,NE,EQ}{16,32} instructions.
|
|
|
|
* ic/stp22xx/stp220x.c (_tme_stp220x_ebus_cycle): Fixed a bug where we
|
|
wouldn't update the read/write bits in the control register.
|
|
|
|
* ic/stp22xx/stp222x-impl.h: Added tme_stp2220_mdu_idi_zs0_zs1_active
|
|
to struct tme_stp222x.
|
|
|
|
* ic/stp22xx/stp222x-mdu.c (tme_stp222x_mdu_intcon): Now mimic how the
|
|
zs0 and zs1 interrupt signals are wired together somewhere.
|
|
|
|
* ic/stp22xx/stp222x-stc.c (tme_stp222x_stc_flush): The stp2220 flush
|
|
writeback actually only writes back four bytes, not eight.
|
|
(tme_stp222x_stc_regs_diag): Added minimal emulation of reads of the
|
|
diagnostic registers, always returning zero.
|
|
|
|
* libtme/misc.c (tme_misc_cycles_scaled): Now take an optional pointer
|
|
to an unscaled cycles counter, and do the scaling as a simple
|
|
floating-point multiply. Added support for hosts that don't have a
|
|
64-bit integral type.
|
|
(tme_misc_cycles_scaling): Now make the scaling with a simple
|
|
floating-point division.
|
|
[!TME_HAVE_MISC_CYCLES_PER_MS] (tme_misc_cycles_per_ms): Added support
|
|
for hosts that don't have a 64-bit integral type.
|
|
[!TME_HAVE_MISC_CYCLES] (tme_misc_cycles): Added support for hosts
|
|
that don't have a 64-bit integral type.
|
|
(tme_misc_cycles_spin_until):
|
|
(tme_value64_add):
|
|
(tme_value64_sub): Added.
|
|
|
|
* libtme/threads-sjlj.c (tme_sjlj_dispatch): Fixed a bug where we
|
|
would call gtk_idle_add_priority() when we weren't using GTK.
|
|
|
|
* libtme/host/x86/misc-x86.c: Define tme_misc_cycles() with inline.
|
|
|
|
* machine/sun/sun-bwtwo.c (_tme_sunbw2_type_set): Now define the
|
|
interrupt bus signal.
|
|
|
|
* machine/sun/sun-cgsix.c (_tme_suncg6_type_set): Now define the
|
|
interrupt bus signal.
|
|
|
|
* machine/sun/sun-fb.c: Now define TME_SUNFB_UPDATE_SIZE. Changed
|
|
various tme_bus_addr_t to tme_bus_addr32_t.
|
|
(_tme_sunfb_callout): Now call out the framebuffer-specific interrupt
|
|
bus signal, instead of always using the unspecified one, and mark the
|
|
signal callout as an edge.
|
|
(tme_sunfb_memory_update): Pass and reset the first and last bytes
|
|
updated, if any, in the real framebuffer memory, and invalidate any
|
|
outstanding write TLB entries.
|
|
(tme_sunfb_bus_cycle_bt458): Now tolerate reads and writes to invalid
|
|
addresses.
|
|
(_tme_sunfb_tlb_fill): Track one outstanding writable TLB entry, and
|
|
the minimum and maximum possible bytes that any writable TLB entry
|
|
could have written since the last framebuffer update.
|
|
[TME_SUNFB_BUS_TRANSITION] (tme_sunfb_bus_cycle_transition): Added.
|
|
(tme_sunfb_new): Make sure that the interrupt bus signal is defined.
|
|
(tme_sun_cgthree): Define the interrupt bus signal.
|
|
|
|
* machine/sun/sun-fb.h: Now include <tme/completion.h>. Now define
|
|
TME_SUNFB_LOG_HANDLE(). Temporarily define TME_SUNFB_BUS_TRANSITION.
|
|
Changed some tme_bus_addr_t to tme_bus_addr32_t. In struct tme_sunfb,
|
|
added members for one outstanding writable TLB entry, the offsets of
|
|
the first and last bytes updated in the real framebuffer memory, and
|
|
the interrupt bus signal.
|
|
Added prototypes for tme_sunfb_bus_cycle_bt458 and
|
|
tme_sunfb_bus_cycle_transition.
|
|
|
|
* scsi/scsi-device.c (_tme_scsi_device_cycle): If the device does not
|
|
define a handler for a command, use the illegal command handler.
|
|
|
|
* tme/misc.h: Changed tme_misc_cycles_scaling_t to be the widest
|
|
available floating-point type.
|
|
Updated the tme_misc_cycles_scaled() prototype. Added a prototype for
|
|
tme_misc_cycles_spin_until().
|
|
|
|
Tue Oct 27 00:45:16 2009 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/sparc/sparc-rc-insns.c (_tme_sparc_recode_recode): When recoding
|
|
branches, now get the raw branch displacement as a signed 32 bits,
|
|
doing the full sign-extension to guest width in one place.
|
|
Added support for branch to . timing loops. When the PCs are not
|
|
updated, in addition to checking that the PC advance is zero, check
|
|
that the PC is in the guest PC register.
|
|
|
|
* ic/sparc/sparc-timing.c: Added.
|
|
|
|
Tue Oct 13 22:40:10 2009 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* tools/tme-log-binary-dump.pl:
|
|
* tools/tme-log-binary-udiff.pl:
|
|
* tools/tme-log-binary.pl: Added.
|
|
|
|
Sat Sep 26 14:55:25 2009 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/sparc/sparc-execute.c: Now define tme_sparc_idle_pcs, instead of
|
|
tme_sparc_idle_type_pc. Now use TME_SPARC_HAVE_RECODE() to test for
|
|
recode support. Reworked idle handling. Now, an idle type must mark
|
|
two consecutive idles without a trap before we go idle. This
|
|
eliminates the race condition where we would trap, then resume in the
|
|
idle loop past the point of no return of our going idle (i.e., before
|
|
looping to check the possibly updated scheduler state again). Also
|
|
added support for marking idles in a true idle loop. No longer go
|
|
idle for the netbsd32-type-0 idle type in an annulled branch delay
|
|
slot.
|
|
When recode is supported, before checking for a recode thunk, detect a
|
|
control transfer target that is an idle PC, and mark the idle. When
|
|
recode is not supported, in the control transfer instruction handling,
|
|
detect a control transfer target that is an idle PC, and mark the
|
|
idle.
|
|
|
|
* ic/sparc/sparc-impl.h: Added macros for the new idle types, and
|
|
macros for sets of idle types with common characteristics.
|
|
Replaced TME_SPARC_IDLE_TYPES_SUPPORTED() with
|
|
TME_SPARC_IDLE_TYPE_IS_SUPPORTED(). Added TME_SPARC_IDLE_MARK() and
|
|
TME_SPARC_IDLE_STOP(). Added TME_SPARC_HAVE_RECODE(). In struct
|
|
tme_sparc, added an instruction burst count for when idle. Now track
|
|
the number of idle marks made since the last trap, and multiple idle
|
|
PCs.
|
|
|
|
* ic/sparc/sparc-insns.c: Now include <tme/misc.h>.
|
|
Now define a constant TME_SPARC_VERSION() around the instructions for
|
|
the different architectures.
|
|
In all of the sparc32 instructions, renamed TME_SPARC_TRAP_ to
|
|
TME_SPARC32_TRAP_.
|
|
(tme_sparc32_rdpsr): Removed the sunos32-type-0 idle type detection.
|
|
This idle type is now detected only in tme_sparc32_wrpsr().
|
|
(tme_sparc32_wrpsr): Reworked all sparc32 idle type detection that
|
|
keys off of a wrpsr. Now use TME_SPARC32_CWP_UPDATE().
|
|
(tme_sparc32_rett):
|
|
(tme_sparc32_save_restore): Now use TME_SPARC32_CWP_UPDATE().
|
|
[TME_HAVE_INT64_T]: Added the sparc64 instructions.
|
|
|
|
* ic/sparc/sparc-misc.c (_tme_sparc_idle_reset): Added. All functions
|
|
that reset the idle state now call here.
|
|
(tme_sparc_thread): Added support for the new idle types.
|
|
(tme_sparc_new): Initialize the idle instruction burst size.
|
|
(tme_sparc32_trap):
|
|
(tme_sparc64_trap): Traps always do a TME_SPARC_IDLE_STOP().
|
|
(tme_sparc_ls_bus_fault): Fixed a bug where we wouldn't advance the
|
|
cycle to get past the fault under TME_SPARC_LSINFO_NO_FAULT. This
|
|
caused fetches of annulled instructions that fault to loop forever.
|
|
(tme_sparc_fetch_nearby): Cleaned up the code that gets the current PC
|
|
and the nearby PC, especially making sure that the offset remains
|
|
signed after multiplying it by a sizeof(), and truncating the result
|
|
to the correct address size. Fixed a bug where we would assert() that
|
|
the ITLB entry applies without checking if it's valid - for various
|
|
reasons the ITLB might be the execute loop's itlb_invalid.
|
|
|
|
* ic/sparc/sparc-rc-insns.c (_tme_sparc_recode_recode): No longer
|
|
check for the netbsd32-type-0 idle PC in a branch delay slot. This
|
|
idle type is now handled as a true idle loop in the execute loop.
|
|
|
|
* scsi/scsi-cdrom.c: Now handle
|
|
TME_SCSI_CDB_CDROM_READ_DISC_INFORMATION and
|
|
TME_SCSI_CDB_CDROM_CACHE_SYNC as illegal.
|
|
|
|
* tme/scsi/scsi-cdrom.h: Now define
|
|
TME_SCSI_CDB_CDROM_READ_DISC_INFORMATION.
|
|
|
|
Tue Sep 08 23:15:20 2009 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* machine/sun4u/Makefile.am:
|
|
* machine/sun4u/SUN-ULTRA-1: Added.
|
|
|
|
Mon Sep 07 15:42:24 2009 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/stp22xx/stp222x-main.c (_tme_stp222x_run): Fixed a bug where we
|
|
would request the UPA bus for an interrupt dispatch even when we
|
|
weren't ready to retry the dispatch.
|
|
|
|
* ic/stp22xx/stp22xx.c (tme_stp22xx_cond_sleep_yield): Fixed a bug
|
|
where we wouldn't mark the condition as running under NDEBUG, before
|
|
calling the run function. If the condition was notified before the
|
|
sleep, since it was still marked idle, it wouldn't be marked as
|
|
notified, and the notify would be lost.
|
|
|
|
* libtme/host/x86/rc-x86-conds.c (tme_recode_host_conds_thunk_new):
|
|
Use the new TME_SHIFT() macro when doing host-size shifts of a
|
|
tme_recode_uguest_t, which may be smaller than host-size. Fixed a bug
|
|
emitting an %rip EA on an x86-64 host.
|
|
|
|
* libtme/host/x86/rc-x86-flags.c (tme_recode_host_flags_thunk_new):
|
|
Use the new TME_SHIFT() macro when doing host-size shifts of a
|
|
tme_recode_uguest_t, which may be smaller than host-size. Fixed a bug
|
|
where the test subs wasn't chaining to the main flags subs.
|
|
|
|
* libtme/host/x86/rc-x86-insns.c (_tme_recode_x86_insn_guest): Fixed a
|
|
bad double-host-size guest check.
|
|
|
|
* libtme/host/x86/rc-x86-rws.c (tme_recode_host_rw_thunk_new): When
|
|
converting the guest address into the TLB entry page offset, do it at
|
|
the smaller of the host size and the guest read/write address size.
|
|
(tme_recode_host_rw_thunk_dup): The sign-extension instruction can be
|
|
four bytes, not only less.
|
|
|
|
* libtme/host/x86/rc-x86-subs-asm.S (tme_recode_x86_shift): We need to
|
|
extend for all right shifts less than host size, not just those less
|
|
than 32 bits, because the common shra-all code assumes that the
|
|
destination is host-size. This change only affected x86-64 hosts,
|
|
which also had a REX bug.
|
|
|
|
* libtme/host/x86/recode-x86.c (_tme_recode_x86_emit_adjust_sp): Fixed
|
|
a bug where we would overwrite the REX prefix on an x86-64 host.
|
|
(_tme_recode_x86_raw_reg_binop): Fixed another bug where we used
|
|
addition instead of binary-OR to combine two overlapping values.
|
|
(tme_recode_host_ic_new): Fixed a TME_RECODE_REG_C inside a REX prefix
|
|
macro.
|
|
Fixed a REX.B macro for an address that had a size. When emitting the
|
|
jump chain adjust of the c register, advance thunk_bytes normally,
|
|
then assert that the value of TME_RECODE_X86_OFFSET_JUMP_CHAIN_DIRECT
|
|
is correct, instead of using it to advance thunk_bytes. Fixed another
|
|
bug where we used addition instead of binary-OR to combine two
|
|
overlapping values.
|
|
|
|
* tme/common.h (TME_SHIFT): Added.
|
|
|
|
* tme/host/recode-x86.h: An x86-64 host needs a larger value of
|
|
TME_RECODE_HOST_INSN_SIZE_MAX.
|
|
|
|
Tue Sep 01 00:54:01 2009 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/sparc/Makefile.am: Added sparc-recode.c and stp103x.c to
|
|
tme_ic_sparc_la_SOURCES. Added sparc-vis-auto.c to BUILT_SOURCES.
|
|
Added sparc-vis-auto.sh and the sparc recode parts to EXTRA_DIST.
|
|
Added a target to make sparc-vis-auto.c.
|
|
|
|
* ic/sparc/cy7c601.c (tme_ic_,sparc,cy7c601): Initialize many new
|
|
struct tme_sparc members with cy7c601-specific values.
|
|
|
|
* ic/sparc/mb86900.c (tme_ic_,sparc,mb86900): Initialize many new
|
|
struct tme_sparc members with mb86900-specific values.
|
|
|
|
* ic/sparc/sparc-recode.c: Removed TME_SPARC_RECODE_PAGE_SIZE_LOG2 and
|
|
TME_SPARC_RECODE_PAGE_SIZE. We now use the ic's actual page size
|
|
everywhere, instead of a fixed sparc recode page size. The fixed
|
|
sparc recode page size of 4KB forced writes to always be assisted when
|
|
the ic had a larger page size, because DTLB entries for writing were
|
|
never for a full page (since we made the fixed sparc recode page size
|
|
the validity size for cacheable memory, DTLB entries were never bigger
|
|
than that). All users changed. Moved _tme_sparc_recode_verify_on
|
|
from sparc-rc-verify.c, and added _tme_sparc_recode_off.
|
|
Added sparc-rc-ls.c to the set of recode parts included for each
|
|
architecture.
|
|
Now define TME_SPARC_RECODE_RW_THUNK_INDEX().
|
|
(tme_sparc_recode): If recode is off, return immediately.
|
|
(tme_sparc_recode_dump_insns): Added support for read/write
|
|
instructions.
|
|
(tme_sparc_recode_init): Allocate and initialize the read-uses
|
|
records. On a v9 CPU, %r1 through %r7 are addressed through recode
|
|
register window two. Set all of the recode TLB entry information for
|
|
read/write instructions. Call the architecture-specific
|
|
initialization for loads and stores.
|
|
|
|
* ic/sparc/stp103x.c: Now define TME_STP103X_ICACHE_BLOCK_SIZE.
|
|
Reorganized struct tme_stp103x slightly, to put everything that is
|
|
recode-verifiable first, and everything that is accessed by loads and
|
|
stores last.
|
|
(_tme_stp103x_interrupt_check):
|
|
(_tme_stp103x_flush): If we're replaying instructions, return
|
|
immediately.
|
|
(_tme_stp103x_update_pstate): Fixed a bug where we wouldn't update the
|
|
recode register window offsets.
|
|
(_tme_stp103x_rdpr): Added.
|
|
(_TME_SPARC_EXECUTE_OPMAP): Now use _tme_stp103x_rdpr.
|
|
(_tme_stp103x_ls_cycle_block_ld):
|
|
(_tme_stp103x_ls_cycle_block_st): Save the block for verification.
|
|
(_tme_stp103x_new): Fixed a bug where we were only allocating a struct
|
|
tme_sparc, and not the larger struct tme_stp103x. Initialize
|
|
_tme_sparc_ls_asi_misaligned. Under _TME_SPARC_RECODE_VERIFY,
|
|
initialize the recode verify sizes.
|
|
|
|
* ic/stp22xx/stp220x.c:
|
|
* ic/stp22xx/stp222x-main.c: Removed some AUDITs.
|
|
|
|
* libtme/host/x86/rc-x86-rws.c: Fixed various bugs where we used a
|
|
size with a TME_RECODE_X86_REX_B() that is for addressing.
|
|
(_tme_recode_x86_rw_tlb_ref): Fixed a bad assert().
|
|
(tme_recode_host_rw_thunk_new): Added support for recode TLB entries
|
|
with a 16-bit context.
|
|
Added support for offsetting the address when making the TLB entry
|
|
index.
|
|
The recode TLB entries are now a found directly in the ic structure,
|
|
not found through a pointer.
|
|
Now emit instructions to check a recode TLB entry's context. Fixed
|
|
bugs where we would emit a displacement-less EA when the lone base
|
|
register is %bp or %r13.
|
|
In the double-host-size most-signficant write, we know that its size
|
|
is TME_RECODE_SIZE_HOST.
|
|
Fixed a bug where we wouldn't do the double-host-size most-significant
|
|
read first, before we destroy the host memory address register. Fixed
|
|
bugs where we would lose instructions because we forgot to finish and
|
|
restart the thunk, or forgot to advance thunk_bytes.
|
|
|
|
Mon Aug 31 02:23:41 2009 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/sparc/sparc-rc-ls.c (TME_SPARC_RECODE_RW_FLAG): Removed.
|
|
(_tme_sparc_recode_ls_assist_check): Added.
|
|
(_tme_sparc_recode_ls_assist_ld) [_TME_SPARC_RECODE_VERIFY]:
|
|
(_tme_sparc_recode_ls_assist_st) [_TME_SPARC_RECODE_VERIFY]: Call
|
|
_tme_sparc_recode_ls_assist_check().
|
|
(tme_sparc_recode_ls_tlb_update): Now take the struct tme_sparc_ls *,
|
|
so we can get the DTLB entry directly. Added tme_sparc_ireg_t casts
|
|
to the DTLB address check, to avoid doing math in a wider
|
|
tme_bus_addr_t.
|
|
Force assists for a DTLB entry if it uses special ASIs.
|
|
Improved the recode TLB entry read/write flags, including handling
|
|
DTLB entries for no-fault loads, addresses with side-effects, and
|
|
endianness changes. Also, no longer check for DTLB entries that
|
|
support the secondary address space, because we can't assist them
|
|
(mostly because recode read/write instructions only have a single
|
|
default context).
|
|
All sparc recode TLB entries have a 16-bit context, and update the
|
|
context and the context mismatch read/write flag as needed.
|
|
(_tme_sparc_recode_ls_init): Improved how the read/write thunks are
|
|
generated, and especially their read/write flags masks. No longer
|
|
make read/write thunks for accesses to secondary address spaces. Make
|
|
read/write thunks for no-fault loads.
|
|
|
|
* ic/sparc/sparc-rc-verify.c: Define a token for the replay ITLB
|
|
entry.
|
|
(tme_sparc_recode_verify_begin): Set the token on the replay ITLB
|
|
entry.
|
|
(_tme_sparc_recode_verify_init): Initialize the token for the replay
|
|
ITLB entry, and mark it as valid.
|
|
|
|
Mon Aug 31 01:58:38 2009 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* generic/fb-xlat-auto.sh: Now only check framebuffer contents that
|
|
may have been updated for changes.
|
|
|
|
* host/gtk/gtk-screen.c (_tme_gtk_screen_th_update): If the
|
|
framebuffer needs a full redraw, force the next translation to
|
|
retranslate everything.
|
|
(_tme_gtk_screen_mode_change): Now delay forcing the next translation
|
|
until the next screen update.
|
|
|
|
* host/posix/posix-memory.c: Defined some macros for sizes of
|
|
cacheables, and the writable TLB entry hash set.
|
|
Added struct tme_posix_memory_valids. In struct tme_posix_memory,
|
|
added a mutex. Fixed a bug where the rwlock was a mutex. Added
|
|
pointers to any writable TLB entry hash set, a list of valids
|
|
bitmasks. Added members for the current writable TLB size, and our
|
|
cacheable structure.
|
|
(_tme_posix_memory_tlbs_invalidate): Added.
|
|
(_tme_posix_memory_tlb_fill): If this memory is cacheable, return the
|
|
cacheable structure in the TLB entry, and if this is a write, track
|
|
the TLB entry in the hash set and clear the bit for the address' page
|
|
in all valids bitmasks.
|
|
(_tme_posix_memory_valids_new):
|
|
(_tme_posix_memory_valids_set): Added.
|
|
(tme_host_posix,memory): If the memory is cacheable, allocate the
|
|
writable TLB entry set, initialize the valids list and the writable
|
|
TLB size, and the cacheable structure.
|
|
|
|
* ic/sparc/sparc-execute.c: Now define TME_PRIxSPARCREG.
|
|
On sparc64, fixed the ASI mask code and set the default memory
|
|
context.
|
|
[TME_HAVE_RECODE]: Set the default read/write flags for the current
|
|
CPU state.
|
|
Instead of constructing the invalid ITLB entry, initialize its new
|
|
token and set it on the entry. Never acquire the external mutex, and
|
|
only call the external check function if the external flag is set.
|
|
Now save the previous PC. If we're replaying recoded instructions for
|
|
the verifier, stop replaying if the previous PC was the last to
|
|
replay. Otherwise, poison it to prevent all recoding. Added
|
|
(tme_sparc_ireg_t) casts to the ITLB entry address checks, to avoid
|
|
doing math in a wider tme_bus_addr_t. Now use TME_SPARC_TLB_HASH()
|
|
and TME_SPARC_ITLB_ENTRY() to get the ITLB entry from the array. Now
|
|
check the context on an ITLB entry. Now, instead of filling the ITLB
|
|
entry ourselves, just do a slow load of the instruction, which will
|
|
take care of everything, including fetching the instruction into the
|
|
memory buffer if needed. Since idle loop detection can't take place
|
|
in the instruction executor when recode is in use, moved the
|
|
netbsd32-type-0 detection into tme_sparc32_wrpsr(). In the rare case
|
|
that an annulled instruction is also a branch target
|
|
(which can only happen if there are two branches in a row, where the
|
|
second one annuls), make sure we don't try to recode starting at the
|
|
annulled instruction.
|
|
Use TME_SPARC_G0_OFFSET(ic) to find the globals.
|
|
[TME_HAVE_RECODE]: Now recode instructions, run recoded instructions
|
|
thunks, and replay the same instructions through the normal executor
|
|
to compare the effects.
|
|
TME_SPARC_IREG_IMM has been replaced by TME_SPARC_IREG_TMP(0). Added
|
|
support for the sparc64 format two instructions. Added support for
|
|
the sparc64 %pstate.AM in the control transfers.
|
|
|
|
* ic/sparc/sparc-insns-auto.sh: Define _tme_sparc_float_null.
|
|
Now emit the fpop1 and fpop2 instructions. Now emit instructions for
|
|
sparc64, including the new sdivx, udivx, mulx, ldx, stx, ldxa, stxa,
|
|
casxa, casa, and the alternate floating-point load and store
|
|
instructions.
|
|
(_tme_sparc32_alternate_asi_mask): Get the flags for an ASI and build
|
|
a mask using the new ASI-mask macros. If this ASI has a special
|
|
handler, force a slow load or store by making the ASI mask undefined.
|
|
(_tme_sparc64_alternate_asi_mask):
|
|
(_tme_sparc${arch}_fpu_mem_fpreg): Added.
|
|
(tme_sparc${arch}_udiv):
|
|
(tme_sparc${arch}_udivcc):
|
|
(tme_sparc${arch}_sdiv):
|
|
(tme_sparc${arch}_sdivcc): Trap on division by zero, and added
|
|
overflow handling for the cc instructions. Fixed a sparc64 bug where
|
|
we would only set %icc.Z when the 64-bit result was zero.
|
|
In the load/store instructions, get the right address for the sparc64
|
|
casa and casxa instructions, and when %pstate.AM is set. Get the
|
|
context for sparc64 alternate instructions. Make a mask of ASI flags
|
|
that will trigger a slow load/store. Check the DTLB entry's context.
|
|
Added (tme_bus_addr${arch}_t) casts to the DTLB address check. Check
|
|
that the ASI mask in the DTLB entry allows fast transfers. For a slow
|
|
transfer, call the new tme_sparc${arch}_ls(). Now, allow the slow
|
|
function to complete an alternate load. Get the byte order of the
|
|
access and do byteswapping as needed.
|
|
(tme_sparc${arch}_${insn}): Added support for the sparc64 %pstate.AM
|
|
and possible address space hole.
|
|
(tme_sparc${arch}_ldf*):
|
|
(tme_sparc${arch}_stf*): On sparc64, call the ASI misaligned function
|
|
to see if the address is misaligned. Before the memory access, now
|
|
call _tme_sparc${arch}_fpu_mem_fpreg() to check for any traps and to
|
|
get the floating-point register.
|
|
(tme_sparc${arch}_lddf*):
|
|
(tme_sparc${arch}_stdf*): On sparc64, call the ASI misaligned function
|
|
to see if the address is misaligned. Before the memory access, now
|
|
call _tme_sparc${arch}_fpu_mem_fpreg() to check for any traps and to
|
|
get the floating-point register. Added support for sparc64
|
|
fully-aligned and 32-bit aligned accesses.
|
|
(tme_sparc${arch}_ldfsr):
|
|
(tme_sparc${arch}_stfsr): Now check for traps with
|
|
_tme_sparc${arch}_fpu_mem(). Added support for the sparc64 ldxfsr and
|
|
stxfsr.
|
|
(tme_sparc${arch}_atomic): Added.
|
|
(tme_sparc${arch}_load):
|
|
(tme_sparc${arch}_store): These functions are no longer called
|
|
directly by instruction functions. They now only do final loads and
|
|
stores (as opposed to pre-access fault checking, DTLB filling, etc.).
|
|
(tme_sparc${arch}_ls): Added. This is the function called by
|
|
instruction functions to do a slow access. This coordinates special
|
|
ASIs, address mapping, DTLB filling, pre-access fault checking, and
|
|
slow load, store, and atomic cycles.
|
|
|
|
* ic/sparc/sparc-misc-auto.sh: Define the sparc64 alternate, MMU, and
|
|
interrupt globals. Define TME_SPARC_IREG_INSN.
|
|
Replaced TME_SPARC_IREG_IMM with TME_SPARC_IREG_TMP(). Defined many
|
|
sparc64 architected and internal registers.
|
|
|
|
* ic/sparc/sparc-misc.c (_tme_sparc_bus_signal): Now recognize the bus
|
|
grant signal. Now track both assertion and negation of halt and
|
|
reset. Changed the external signal indications to true atomic flags,
|
|
and set the external atomic flag after any changes. Moved the
|
|
condition variable notify inside the mutex lock.
|
|
(_tme_sparc_bus_interrupt): Now update the external IPL value with an
|
|
atomic write, and set the external atomic flag afterwards. Moved the
|
|
condition variable notify inside the mutex lock.
|
|
(tme_sparc_idle): Now call the ic-specific external check function,
|
|
instead of the_sparc32_external_check().
|
|
(tme_sparc_thread): Added support for TME_SPARC_MODE_OFF.
|
|
(_tme_sparc_generic_tlb_fill): Now take a tme_bus_addr_t. Don't set
|
|
the ASI mask any more, the slow load/store function has arranged or
|
|
will arrange for it to be set.
|
|
(_tme_sparc_connection_score):
|
|
(_tme_sparc_connections_new): Replaced bus connection TLB set allocate
|
|
references with TLB set add references. Added support for UPA bus
|
|
connections.
|
|
(_tme_sparc_connection_make): Replaced bus connection TLB set allocate
|
|
references with TLB set add references. Added support for UPA bus
|
|
connections. Now initialize the TLB set and add it to the bus,
|
|
getting the maximum context back in the v7 case.
|
|
(tme_sparc_new): Added support for the tick-frequency and
|
|
prom-delay-factor options. Initialize the cycles scaling. The
|
|
processor starts off. Initialize the external state, CWP offsets and
|
|
the ASI flags. Initialize recoding.
|
|
(tme_sparc_redispatch):
|
|
(tme_sparc32_trap_preinstruction): End any recode verifying.
|
|
(tme_sparc32_external_check): Now take a flag that says whether or not
|
|
the external mutex is locked. Update the new external state as
|
|
needed.
|
|
(tme_sparc32_trap): End any recode verifying. Now use
|
|
TME_SPARC32_CWP_UPDATE() to update the CWP offsets, and
|
|
TME_SPARC_REG_INDEX() to find %r17. Now log traps.
|
|
(tme_sparc32_fetch_slow):
|
|
(tme_sparc32_bus_fault): Removed.
|
|
(tme_sparc32_ls_bus_cycle):
|
|
(tme_sparc32_ls_address_map):
|
|
(tme_sparc32_ls_trap):
|
|
(tme_sparc_nnpc_trap):
|
|
(tme_sparc_ls_bus_fault):
|
|
(tme_sparc64_trap_preinstruction):
|
|
(tme_sparc64_trap):
|
|
(tme_sparc64_trap_error_state): Added.
|
|
(tme_sparc_callout_relock): Now check the ITLB entry's context.
|
|
(tme_sparc32_dump): Replaced TME_SPARC_CWP_OFFSET() with hard-coded
|
|
multiplications by 16.
|
|
(tme_sparc32_dump_memory): Converted into tme_sparc64_dump_memory().
|
|
|
|
* ic/sparc/sparc-rc-insns.c: Removed TME_SPARC_RECODE_INSN_STORE;
|
|
along with loads, stores are now detected by their
|
|
TME_RECODE_OPCODE_RW opcode. Added TME_SPARC_RECODE_INSN_UPDATE_INSN.
|
|
TME_SPARC_RECODE_INSN_ASSIST now includes
|
|
TME_SPARC_RECODE_INSN_UPDATE_INSN. Replaced
|
|
TME_SPARC_RECODE_INSN_ASSIST_STORE with TME_SPARC_RECODE_INSN_ST, and
|
|
added TME_SPARC_RECODE_INSN_LD and TME_SPARC_RECODE_INSN_LDA. These
|
|
are now used for the load and store instructions that can be recode
|
|
read/write instructions, and TME_SPARC_RECODE_INSN_ASSIST_FULL |
|
|
TME_SPARC_RECODE_INSN_NO_RD is used for stores (usually alternate
|
|
stores) that can't be. Fixed a bug where std and stda were missing
|
|
TME_SPARC_RECODE_INSN_NO_RD.
|
|
casx and casxa are now TME_SPARC_RECODE_INSN_ASSIST_FULL.
|
|
(tme_sparc_recode_insn_assist_redispatch): Added, from the old
|
|
_tme_sparc_recode_insn_assist_redispatch(), all callers changed. Now
|
|
check that the ITLB entry hasn't been poisoned by
|
|
tme_sparc_callout_relock(), and that the remaining instruction burst
|
|
is still nonzero.
|
|
(_tme_sparc_recode_insn_assist_store): Removed.
|
|
(_tme_sparc_recode_insn_assist_full): Now track statistics on assisted
|
|
opcodes.
|
|
(_tme_sparc_recode_recode): Now use the ic's actual page size
|
|
everywhere, instead of a fixed sparc recode page size. The fixed
|
|
sparc recode page size of 4KB forced writes to always be assisted when
|
|
the ic had a larger page size, because DTLB entries for writing were
|
|
never for a full page (since we made the fixed sparc recode page size
|
|
the validity size for cacheable memory, DTLB entries were never bigger
|
|
than that).
|
|
For the v9 movr, fixed bugs where we had the wrong opcode and didn't
|
|
set the right conditions thunk. Added support for the v9 ld*a
|
|
instructions, because they may be used for speculative loads, which we
|
|
do want to handle with recode read instructions.
|
|
For BPcc and Bicc, extract the branch displacement using 32-bit types
|
|
for as long as possible. Now test TME_SPARC_RECODE_INSN_UPDATE_INSN
|
|
to see if an instruction always or sometimes needs an assist, instead
|
|
of just checking for TME_RECODE_OPCODE_GUEST.
|
|
Fixed a bug in the v9 32-bit shifts where we put the extension source
|
|
size in the immediate field, instead of the second source operand
|
|
field.
|
|
Reused the old TME_SPARC_RECODE_INSN_STORE support for generating an
|
|
assisted store for generating recode read/write instructions.
|
|
|
|
Sun Aug 30 17:06:38 2009 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/sparc/sparc-fpu-auto.sh (_tme_sparc_fpu_fcc_${precision}): Added
|
|
support for the additional fccN on sparc64.
|
|
(tme_sparc_fpu_fpop[12]): Added support for encoded floating-point
|
|
register numbers, recode verification, FMOV*cc, FxTO*, F*TOx, FNEGd,
|
|
FABSd. Now dirty any destination register.
|
|
|
|
* ic/sparc/sparc-impl.h: Replaced all of the old TME_SPARC_TRAP_
|
|
macros with architecture-specific trap macros, whose values now
|
|
include priority and other flags. For those trap names that are
|
|
common across architectures, a new TME_SPARC_TRAP() macro can be used
|
|
to expand to the right value for the current architecture. All users
|
|
changed. For sparc64, added the FPRS, TSTATE, WSTATE, VER, XCC, and
|
|
VIS GSR fields, and added more PSTATE fields. Added the sparc VIS
|
|
ASIs.
|
|
Added macros for the SPARC integer conditions. Added
|
|
TME_SPARC_MODE_OFF and TME_SPARC_TL_MAX. Added a set of macros for
|
|
updating the register window offsets for a new CWP, that update
|
|
separate offsets for the output, local, and input registers, and also
|
|
the recode register window offsets. This simplifies
|
|
TME_SPARC_REG_INDEX. Now that there are only flat DTLB and ITLB
|
|
arrays, added a TME_SPARC_TLB_HASH() to hash an address into an array.
|
|
TME_SPARC_DTLB_ENTRY() and TME_SPARC_ITLB_ENTRY() now take one of
|
|
these hashes, instead of an address. The slow load and store
|
|
functions, and any function that supports a slow load or store, now
|
|
take an expanded set of information about the access.
|
|
Added macros for defining masks of load/store faults and memory
|
|
features.
|
|
Now define TME_SPARC_FPU_FPREG_NUMBER_UNDEF, TME_SPARC_FPU_DIRTY(),
|
|
and TME_SPARC_FPU_IS_DISABLED(). Fixed TME_SPARC_FORMAT3_RD_ODD() to
|
|
take the register set name for the architecture.
|
|
Added TME_SPARC_INSN_FPU_ENABLED, which TME_SPARC_INSN_FPU now uses.
|
|
Removed TME_SPARC_INSN_FPU_STORE.
|
|
[TME_HAVE_RECODE]: Now define macros for sparc recode.
|
|
(tme_sparc_log_start): Fixed sparc64 support. Now define macros for
|
|
fixing PROM delay factors. Now define TME_SPARC_MEMORY_FLAGS() and
|
|
_TME_SPARC_MEMORY_FLAGS(). Removed TME_SPARC_ASI_DATA().
|
|
Now typedef _tme_sparc64_format3 and _tme_sparc_ls_asi_handler. Added
|
|
struct tme_sparc_ls.
|
|
[TME_HAVE_RECODE]: Added struct tme_sparc_recode_cacheable. In struct
|
|
tme_sparc, added the cycles scaling, replaced the single CWP offset
|
|
with individual offsets for the global, output, local, and input
|
|
registers. Added members for sparc64. Expanded the
|
|
implementation-dependent data and functions, especially for the new
|
|
load/store architecture. Retyped the instruction burst counters as
|
|
tme_uint32_t, since recode requires that. Replaced the old TLB entry
|
|
set pointers with a single sparc TLB entry array and a complementary
|
|
array of tokens or recode TLB entries. Added per-ASI information, and
|
|
members for memory context. Added members for the new bus external
|
|
interface. Changed the memory buffer to be a union of all of the
|
|
integral types. Expanded the number of FPU registers and added the
|
|
sparc64 XFSR. Added the VIS state. Fixed a bug where the sparc64
|
|
idle PC was a tme_uint32_t. Under [TME_HAVE_RECODE], added all of the
|
|
state needed for sparc recode. Added more statistics. Changed many
|
|
prototypes, generally for the new load/store architecture, trap
|
|
changes, sparc recode verification, and sparc64 support.
|
|
|
|
* ic/sparc/sparc-vis-auto.sh (tme_sparc_vis)
|
|
[TME_SPARC_RECODE_VERIFY]: Clear the rd buffer.
|
|
(_tme_sparc${arch}_vis_ls_cycle_pst${insn}): Fixed a bug where we
|
|
would get bit two of the store mask instead of bit one.
|
|
(tme_sparc${arch}_vis_ls_asi_pst): Fixed some comments about trap
|
|
handling, and check that our caller checked that the FPU is enabled
|
|
and not in exception_pending mode.
|
|
(tme_sparc${arch}_vis_ls_asi_fl): Fixed some comments about trap
|
|
handling, and check that our caller checked that the FPU is enabled
|
|
and in execute mode.
|
|
(tme_sparc${arch}_vis_ls_asi_misaligned): Added.
|
|
|
|
* libtme/log-prf.c: Added support for two 'l' flags. Use the new
|
|
PRF_OUT_ARG_CODE() for each argument type found.
|
|
|
|
* libtme/log.c: Define macros for the argument type codes. Define
|
|
prf_lld(x) depending on whether or not long long int is supported, and
|
|
_TME_LOG_IF_INT64_T() depending on whether or not tme_int64_t is
|
|
supported. Define _TME_LOG_ALIGN_ANY().
|
|
Typedef tme_log_arg_code_t.
|
|
(LOG_PRF_LOCALS): Added support for two 'l' flags, and for long long
|
|
int arguments.
|
|
(tme_output_append):
|
|
(tme_output_append_error):
|
|
(tme_output_prepend):
|
|
(tme_output_prepend_error): Define a dummy PRF_OUT_ARG_CODE().
|
|
(_tme_log_arg_code): Added.
|
|
(tme_log_part): Added support for binary mode logging. Define a dummy
|
|
PRF_OUT_ARG_CODE() for text mode logging.
|
|
|
|
* tme/kgdb.h: Added.
|
|
|
|
* tmesh/tmesh.c: Added macros, types, and globals for binary mode
|
|
logging.
|
|
(_tmesh_log_output_binary): Added.
|
|
(_tmesh_log_open):
|
|
(main): Added support for binary mode logging.
|
|
|
|
Sun Aug 30 14:42:15 2009 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* machine/sun2/sun2-control.c (_tme_sun2_control_cycle_handler):
|
|
Changed some tme_bus_addr_t to tme_bus_addr32_t. Now call
|
|
_tme_sun2_mmu_context_user_set() on a write to the enable register, in
|
|
case the boot state changed.
|
|
|
|
* machine/sun2/sun2-impl.h: In struct tme_sun2, removed the old
|
|
"special ROM [reset] read bus cycles" support, and added a pointer to
|
|
the m68k bus context register. Removed the prototypes for
|
|
_tme_sun2_mmu_tlb_set_allocate(), _tme_sun2_mmu_tlb_set_add(), and
|
|
_tme_sun2_mmu_reset(). Added a prototype for
|
|
_tme_sun2_mmu_tlb_set_add().
|
|
|
|
* machine/sun2/sun2-mainbus.c (_tme_sun2_command): No longer call
|
|
_tme_sun2_mmu_reset().
|
|
(_tme_sun2_connection_score):
|
|
(_tme_sun2_connections_new): Replaced bus connection TLB set allocate
|
|
references with TLB set add references.
|
|
(tme_machine_sun2): Initialize the m68k bus context register pointer.
|
|
|
|
* machine/sun2/sun2-mmu.c: Changed some tme_bus_addr_t to
|
|
tme_bus_addr32_t. Now define TME_SUN2_CONTEXT_COUNT.
|
|
(_tme_sun2_m68k_tlb_fill):
|
|
(_tme_sun2_mmu_context_user_set): Now handle the boot state, and m68k
|
|
TLB filling in general, more like how sun3 does.
|
|
(_tme_sun2_bus_tlb_fill): Now take a tme_bus_addr_t.
|
|
(_tme_sun2_mmu_tlb_set_allocate):
|
|
(_tme_sun2_reset_cycle):
|
|
(_tme_sun2_mmu_reset): Removed.
|
|
(_tme_sun2_mmu_tlb_set_add): Added.
|
|
(_tme_sun2_mmu_new): Now use TME_SUN2_CONTEXT_COUNT instead of a
|
|
hard-coded 8.
|
|
|
|
* machine/sun3/sun3-control.c (_tme_sun3_memerr_test_cycle_handler):
|
|
Now use tme_token_invalidate() instead of the removed
|
|
tme_bus_tlb_invalidate().
|
|
|
|
* machine/sun3/sun3-impl.h: In struct tme_sun3, added a pointer to the
|
|
m68k bus context register, removed the boot state TLB entry tracking
|
|
array, and track SDVMA TLB entry tokens instead of the TLB entries
|
|
themselves. Replaced the _tme_sun3_mmu_tlb_set_allocate() with the
|
|
_tme_sun3_mmu_tlb_set_add() prototype.
|
|
|
|
* machine/sun3/sun3-mainbus.c (_tme_sun3_connection_score):
|
|
(_tme_sun3_connections_new): Replaced bus connection TLB set allocate
|
|
references with TLB set add references.
|
|
|
|
* machine/sun3/sun3-mmu.c: Changed some tme_bus_addr_t to
|
|
tme_bus_addr32_t. Now define TME_SUN3_CONTEXT_COUNT.
|
|
(_tme_sun3_tlb_fill): No longer track data TLB entries filled in the
|
|
boot state. Since there is no backing TLB entry concept any more, the
|
|
memory error TLB entry pointer tracked is the real TLB entry pointer.
|
|
(_tme_sun3_bus_tlb_fill): Now take a tme_bus_addr_t. Now track and
|
|
invalidate SDVMA TLB entry tokens, instead of the TLB entries
|
|
themselves. Call tme_sun_mmu_context_add() to associate the SDVMA TLB
|
|
entry with the current context.
|
|
(_tme_sun3_mmu_sdvma_change): Now invalidate the SDVMA TLB entry
|
|
tokens, instead of the SDVMA TLB entries themselves.
|
|
(_tme_sun3_mmu_context_set): No longer invalidate boot-state data
|
|
TLBs, and instead factor the boot state into the bus context presented
|
|
to the m68k, but do invalidate all SDVMA TLBs that depended on the
|
|
previous context.
|
|
(_tme_sun3_mmu_tlb_set_allocate): Removed.
|
|
(_tme_sun3_mmu_tlb_set_add): Added.
|
|
(_tme_sun3_mmu_new): Internal context zero is no longer used for the
|
|
boot state.
|
|
|
|
* machine/sun4/sun4-impl.h: In struct tme_sun4, added a token for the
|
|
cache internal TLB entry, a pointer to a v7 CPU bus context register,
|
|
removed the boot state TLB entry tracking array, and track SDVMA TLB
|
|
entry tokens instead of the TLB entries themselves. Replaced the
|
|
_tme_sun44c_mmu_tlb_set_allocate() with the
|
|
_tme_sun44c_mmu_tlb_set_add() prototype. In the
|
|
_tme_sun44c_tlb_fill_bus() prototype, fixed a tme_uint32_t to a
|
|
tme_bus_addr_t.
|
|
|
|
* machine/sun4/sun4-mainbus.c (_tme_sun4_connection_score):
|
|
(_tme_sun4_connections_new): Replaced bus connection TLB set allocate
|
|
references with TLB set add references.
|
|
|
|
* machine/sun4/sun44c-cache.c (_tme_sun44c_cache_cycle_bus):
|
|
(_tme_sun44c_tlb_fill_cache): Now use tme_token_invalidate() instead
|
|
of the removed tme_bus_tlb_invalidate().
|
|
(_tme_sun44c_cache_new): Initialize the token and set it on the cache
|
|
internal TLB entry.
|
|
|
|
* machine/sun4/sun44c-memerr.c (_tme_sun44c_memerr_cycle_bus):
|
|
(_tme_sun44c_tlb_fill_memerr): Now use tme_token_invalidate() instead
|
|
of the removed tme_bus_tlb_invalidate().
|
|
|
|
* machine/sun4/sun44c-mmu.c: Changed some tme_bus_addr_t to
|
|
tme_bus_addr32_t. Now define TME_SUN44C_CONTEXT_COUNT_MAX.
|
|
(_tme_sun44c_tlb_fill_mmu): No longer track data TLB entries filled in
|
|
the boot state.
|
|
(_tme_sun44c_tlb_fill_sparc): Now use TME_SPARC_ASI_MASK_SPECIAL() to
|
|
make the ASI mask for control space.
|
|
(_tme_sun44c_tlb_fill_bus): Now take a tme_bus_addr_t. Now track and
|
|
invalidate SDVMA TLB entry tokens, instead of the TLB entries
|
|
themselves. Call tme_sun_mmu_context_add() to associate the SDVMA TLB
|
|
entry with the current context.
|
|
(_tme_sun44c_mmu_sdvma_change): Now invalidate the SDVMA TLB entry
|
|
tokens, instead of the SDVMA TLB entries themselves.
|
|
(_tme_sun44c_mmu_context_set): No longer invalidate boot-state data
|
|
TLBs, and instead factor the boot state into the bus context presented
|
|
to the SPARC, but do invalidate all SDVMA TLBs that depended on the
|
|
previous context.
|
|
(_tme_sun44c_mmu_tlb_set_allocate): Removed.
|
|
(_tme_sun44c_mmu_tlb_set_add): Added.
|
|
(_tme_sun44c_mmu_new): Internal context zero is no longer used for the
|
|
boot state.
|
|
|
|
* tme/Makefile.am: Added host and bus to SUBDIRS. Added recode.h,
|
|
token.h, and completion.h to pkginclude_HEADERS.
|
|
|
|
* tme/common.h: Added support for 64-bit byteswapping. When
|
|
tme_uint64_t is the gcc unsigned long long, define
|
|
_TME_SHIFTMAX_INT64_T and TME_PRI64. Now define size-specific printf
|
|
formats.
|
|
|
|
* tme/connection.h: In struct tme_connection, added an opaque
|
|
identifier for an element to use with its connections. Now define
|
|
TME_CONNECTION_BUS_UPA.
|
|
|
|
* tme/log.h: Added support for different log modes, and for the new
|
|
binary log mode.
|
|
|
|
* tme/misc.h: Added tme_misc_cycles_scaling_t. Added prototypes for
|
|
tme_value64 tme_misc_cycles_scaled(), tme_misc_cycles_scaling(),
|
|
tme_misc_cycles_per_ms(), and tme_misc_cycles().
|
|
|
|
* tme/recode.h: Added macros, types, and other support for the
|
|
read/write instructions.
|
|
Increased TME_RECODE_REG_GUEST_WINDOW_UNDEF from two to three, and
|
|
redid tme register information window macros, for sparc64.
|
|
Added the read-uses records support.
|
|
|
|
* tme/token.h (tme_token_busy): Make a write-before-read barrier after
|
|
setting the busy flag.
|
|
(tme_token_invalidate_nosync): Added.
|
|
|
|
* tme/host/recode-x86.h: Now define TME_RECODE_HOST_RW_THUNK, and
|
|
macros for making the read/write flags.
|
|
In TME_RECODE_X86_IC, added a member for tracking any loaded register
|
|
window offset around an if/endif.
|
|
|
|
* tme/ic/sparc.h: Redid the ASI mask system to work better for
|
|
sparc64, which uses many more ASIs, many of which do the same address
|
|
translation. In struct tme_sparc_tlb, added a context member and a
|
|
link member. The latter is for linking the TLB entry to any real
|
|
SPARC MMU object.
|
|
|
|
* tme/machine/sun.h: Removed the prototypes for
|
|
tme_sun_mmu_tlbs_context_set() and tme_sun_mmu_tlb_set_allocate(), and
|
|
added the prototypes for tme_sun_mmu_context_add(),
|
|
tme_sun_mmu_context_switched(), and tme_sun_mmu_tlb_set_add().
|
|
Added the prototype for tme_sun_cgsix().
|
|
|
|
Sat Aug 29 21:48:57 2009 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* bus/multibus/3c400.c (_tme_3c400_tlb_fill): Truncate the address
|
|
from the wider tme_bus_addr_t into a tme_bus_addr32_t local.
|
|
|
|
* bus/sbus/sun-fbs4.c (tme_bus_sbus,cgsix): Added.
|
|
|
|
* ic/am9513.c ic/isil7170.c ic/mm58167.c machine/sun/sun-bwtwo.c
|
|
tme/ic/am9513.h tme/ic/isil7170.h tme/ic/mk48txx.h tme/ic/z8530.h:
|
|
|
|
Changed some tme_bus_addr_t to tme_bus_addr32_t.
|
|
|
|
* ic/mk48txx.c: Now define the eight registers beginning with the
|
|
watchdog register. Changed some tme_bus_addr_t to tme_bus_addr32_t.
|
|
(TME_MK48TXX_REG_FIRST):
|
|
(_tme_mk48txx_bus_cycle): Added support for the mk48t59.
|
|
(tme_ic_,mk48txx,mk48t59): Added.
|
|
|
|
* ic/ncr89c105.c ic/stp22xx/stp222x-impl.h ic/stp22xx/stp222x-iommu.c
|
|
ic/stp22xx/stp222x-stc.c ic/stp22xx/stp222x-timer.c
|
|
ic/stp22xx/stp22xx-impl.h ic/stp22xx/stp22xx.c:
|
|
|
|
Removed some AUDITs.
|
|
|
|
* ic/nec765.c: In struct tme_nec765, now store the i82077 DOR.
|
|
(_tme_nec765_reset): Fixed a bug where the second argument was
|
|
supposed to be nonzero for a hard reset.
|
|
(_tme_nec765_bus_cycle): For the check interrupts command, return the
|
|
current cylinder. Added support for the calibrate command and the
|
|
i82077 DOR register. On a request master cycle, don't return that the
|
|
controller is busy.
|
|
(tme_ic_,nec765,i82077): Added.
|
|
|
|
* ic/stp2024.c (_tme_stp2024_cycle_sbus): Fixed bugs where we were
|
|
byteswapping values read, even though tme_bus_cycle_xfer_reg() takes
|
|
care of that.
|
|
|
|
* ic/z8530.c: Changed some tme_bus_addr_t to tme_bus_addr32_t.
|
|
(_tme_z8530_callout): Now add TME_BUS_SIGNAL_EDGE to the interrupt
|
|
callout.
|
|
|
|
* libtme/recode-notes.txt: Added.
|
|
|
|
* tme/generic/float.h: Now define TME_FLOAT_FORMAT_NULL.
|
|
|
|
* tme/generic/ic.h: Increased TME_IC_IREGS_SIZE.
|
|
|
|
Sat Aug 29 19:47:52 2009 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* generic/bus-device-auto.sh: Moved TME_BUS_ROUTER_INIT_INDEX to
|
|
bus-device.h.
|
|
(tme_bus_device_dma_${name}_${i_width}): Replaced the old TLB entry
|
|
reserve/back mechanism with passing the TLB entry's token and a simple
|
|
structure copy.
|
|
|
|
* generic/bus-el.c (_tme_bus_tlb_set_allocate): Removed
|
|
(_tme_bus_tlb_set_add): Added, from the old
|
|
_tme_bus_tlb_set_allocate().
|
|
(_tme_bus_connections_new): Provide _tme_bus_tlb_set_add() instead of
|
|
_tme_bus_tlb_set_allocate().
|
|
|
|
* generic/bus.c (tme_bus_tlb_set_allocate): Removed.
|
|
(tme_bus_tlb_set_add): Added, from the old tme_bus_tlb_set_allocate().
|
|
(tme_bus_tlb_set_invalidate): Added.
|
|
(tme_bus_tlb_map): Fixed a bug where we were using a long to hold a
|
|
bus address offset, instead of a tme_bus_addr_t.
|
|
(tme_bus_tlb_construct):
|
|
(tme_bus_tlb_back):
|
|
(tme_bus_tlb_invalidate): Removed. Now a TLB's token, not an entry
|
|
itself, is tracked by responders.
|
|
(tme_bus_tlb_initialize): Now initialize a TLB entry to be not
|
|
cacheable.
|
|
|
|
* ic/m68k/m68k-execute.c (_TME_M68K_EXECUTE_NAME): Now get the
|
|
instruction TLB entry directly. Since TME_M68K_TLB_OK_FAST_READ was
|
|
removed, manually check everything about the instruction TLB entry,
|
|
including the new TLB context value. Added some (tme_bus_addr32_t)
|
|
casts as needed, to avoid doing wider math when tme_bus_addr_t is
|
|
wider. Replaced tme_bus_tlb_is_valid() and tme_m68k_tlb_is_valid()
|
|
uses with tme_m68k_tlb_is_valid() and tme_m68k_tlb_is_invalid().
|
|
|
|
* ic/m68k/m68k-impl.h (TME_M68K_TLB_ENTRY_SET):
|
|
(TME_M68K_TLB_ENTRY): Removed.
|
|
(TME_M68K_DTLB_ENTRY): Added.
|
|
In struct tme_m68k, replaced the old TLB set pointers with an array of
|
|
struct tme_m68k_tlb, and added the internal bus context register.
|
|
|
|
* ic/m68k/m68k-insns-auto.sh: In the memory access functions, now use
|
|
TME_M68K_DTLB_ENTRY() instead of TME_M68K_TLB_ENTRY(), and get the
|
|
ITLB entry directly. Since the TME_M68K_TLB_OK_FAST_* macros were
|
|
removed, manually check everything about a TLB entry, including the
|
|
new TLB context value. In the slow memory access functions, replaced
|
|
tme_bus_tlb_is_valid() and tme_m68k_tlb_is_valid() uses with
|
|
tme_m68k_tlb_is_valid() and tme_m68k_tlb_is_invalid(). Check the new
|
|
TLB context value. Added some (tme_bus_addr32_t) casts as needed, to
|
|
avoid doing wider math when tme_bus_addr_t is wider.
|
|
|
|
* ic/m68k/m68k-misc.c (_tme_m68k_connection_score):
|
|
(_tme_m68k_connections_new): The tme_bus_tlb_set_allocate member has
|
|
been replaced by tme_bus_tlb_set_add.
|
|
(_tme_m68k_connection_make): Initialize the new TLB array and add it
|
|
on the bus.
|
|
(tme_m68k_go_slow): Since TME_M68K_TLB_OK_FAST_READ was removed,
|
|
manually check everything about the instruction TLB entry, including
|
|
the new TLB context value. Added some (tme_bus_addr32_t) casts as
|
|
needed, to avoid doing wider math when tme_bus_addr_t is wider.
|
|
(tme_m68k_tlb_fill): Replaced a tme_bus_tlb_unbusy_fill() with a
|
|
tme_m68k_tlb_unbusy()/tme_token_invalid_clear() pair. Set the context
|
|
on the TLB entry after it's returned. Added some tme_bus_addr32_t
|
|
casts.
|
|
(tme_m68k_callout_relock): Now get the instruction TLB entry directly.
|
|
Use tme_m68k_tlb_is_invalid() instead of tme_bus_tlb_is_invalid() and
|
|
check that the TLB context is the right one.
|
|
(tme_m68k_rmw_start): Now use TME_M68K_DTLB_ENTRY() instead of
|
|
TME_M68K_TLB_ENTRY(), and tme_m68k_tlb_busy() and
|
|
tme_m68k_tlb_unbusy() instead of the plain bus versions. Added some
|
|
tme_bus_addr32_t casts, and check a TLB's bus context as needed.
|
|
|
|
* libtme/recode-insns.c (tme_recode_insns_thunk): Now generate
|
|
read-uses records, which track read-uses counts for guest registers
|
|
across different live regions in the instructions thunk (instead of
|
|
just the entire thunk). One live region for a guest register ends,
|
|
and another begins, when a guest register is written or when all guest
|
|
registers are flushed out. Initial read-uses records are produced at
|
|
a flush point, and write read-uses records are produced at a write.
|
|
The register allocator uses these records to update its read-uses
|
|
counts when a live region changes.
|
|
Read/write instructions also need all flags flushed, since they may
|
|
fault and never return.
|
|
|
|
* libtme/recode-regs.c (tme_recode_regs_host_free_many): When all host
|
|
registers are freed, consume initial read-uses records to set the
|
|
read-uses counts for all guest registers that have live regions
|
|
beginning now.
|
|
(tme_recode_regs_dst_any): A write begins a new live region for the
|
|
destination guest register, so consume a write read-use record to set
|
|
the read-uses count for it.
|
|
(tme_recode_regs_dst_specific): When the specific host register
|
|
already has a guest register, after writing it if it's dirty, don't
|
|
move it into another host register if the guest register won't be read
|
|
later.
|
|
A write begins a new live region for the destination guest register,
|
|
so consume a write read-use record to set the read-uses count for it.
|
|
|
|
* libtme/host/x86/rc-x86-insns.c (_tme_recode_x86_insn_guest): Fixed a
|
|
bug when making a dummy high half of a double-host-size ia32 guest
|
|
function argument, where we would add to %esp instead of subtracting
|
|
from it.
|
|
(_tme_recode_x86_insn_rw): Added.
|
|
(_tme_recode_x86_insn_emit): When the first source operand is not
|
|
zero, don't assume that it's a guest register when checking the
|
|
opcode-makes-zero optimization. For binary operations on an x86-64
|
|
host, we can only emit an immediate whose one or two host-sized parts
|
|
can be sign-extended from 32-bit parts. On an ia32 host, we can
|
|
always emit any immediate, even for a double-host-sized guest.
|
|
Added an optimization, where any current register window index is
|
|
saved at an if branch, switched with any current register window index
|
|
at an else branch, and compared to the current register window index
|
|
at the endif. Only if they are different is the current register
|
|
window index invalidated. This can often save a register window
|
|
offset reload after an if/endif. Now call _tme_recode_x86_insn_rw()
|
|
for a read/write instruction.
|
|
|
|
* libtme/host/x86/rc-x86-regs.c (tme_recode_host_reg_move): When
|
|
emitting a REX prefix for a register store, size may be
|
|
double-host-size, so be sure to use the minimum of that and the host
|
|
size.
|
|
|
|
* libtme/host/x86/recode-x86.c: Now define register macros for the XMM
|
|
registers, and a generic undefined register number.
|
|
Define opcodes for ROR, MOV_Ib_Eb, REP, Group 15 instructions, and XMM
|
|
move instructions.
|
|
(_tme_recode_x86_raw_reg_copy): Removed.
|
|
(_tme_recode_x86_raw_reg_binop): Added, from the old
|
|
_tme_recode_x86_raw_reg_copy().
|
|
(_tme_recode_x86_emit_reg_binop): Added, from the old
|
|
_tme_recode_x86_emit_reg_copy().
|
|
(_tme_recode_x86_emit_reg_copy): Now use
|
|
_tme_recode_x86_emit_reg_binop().
|
|
(_tme_recode_x86_emit_mul_constant): Added. Now include
|
|
host/x86/rc-x86-rws.c.
|
|
|
|
* machine/Makefile.am: Added sun4u to DIST_SUBDIRS.
|
|
|
|
* machine/sun/Makefile.am: Added sun-cgsix.c to
|
|
libtme_machine_sun_la_SOURCES.
|
|
|
|
* machine/sun/sun-cgsix.c: Added.
|
|
|
|
* tme/generic/bus-device.h: Moved TME_BUS_ROUTER_INIT_INDEX here.
|
|
Added a prototype for tme_bus_device_tlb_set_add().
|
|
|
|
* tme/generic/bus.h: Now define TME_BUS64_LOG2, TME_BUS128_LOG2,
|
|
TME_BUS_SIGNAL_BR, and TME_BUS_SIGNAL_BG.
|
|
(tme_bus_tlb_is_valid):
|
|
(tme_bus_tlb_is_invalid):
|
|
(tme_bus_tlb_busy):
|
|
(tme_bus_tlb_unbusy):
|
|
(tme_bus_tlb_unbusy_fill): Now use the corresponding token macros with
|
|
the TLB entry's token.
|
|
(_tme_bus_tlb_busy_change):
|
|
(_TME_BUS_TLB_OK):
|
|
(TME_BUS_TLB_OK_FAST_READ):
|
|
(TME_BUS_TLB_OK_FAST_WRITE):
|
|
(TME_BUS_TLB_OK_SLOW_READ):
|
|
(TME_BUS_TLB_OK_SLOW_WRITE): Removed. Now define bus-size-specific
|
|
bus address types, and define tme_bus_addr_t to be the largest needed
|
|
bus address type. Now define tme_bus_context_t, struct
|
|
tme_bus_cacheable, and struct tme_bus_tlb_set_info. In struct
|
|
tme_bus_tlb, replaced the members for the old busy and invalid
|
|
mechanism with a pointer to the TLB entry's token. Added a pointer
|
|
for a TLB entry's cacheable information. Now that a TLB set (with its
|
|
bus context register pointer) is added to a bus connection instead of
|
|
allocated by it, replaced the old allocate function pointer with an
|
|
add function pointer in struct tme_bus_connection, and replaced the
|
|
tme_bus_tlb_set_allocate() prototype with one for
|
|
tme_bus_tlb_set_add(). Removed the prototypes for the old TLB entry
|
|
saving, invalidating, and initializing functions.
|
|
|
|
* tme/ic/m68k.h (TME_M68K_TLB_OK_FAST_READ):
|
|
(TME_M68K_TLB_OK_FAST_WRITE):
|
|
(TME_M68K_TLB_OK_SLOW_READ):
|
|
(TME_M68K_TLB_OK_SLOW_WRITE): Removed.
|
|
(tme_m68k_tlb_busy):
|
|
(tme_m68k_tlb_unbusy): Now use the corresponding token macro, on the
|
|
token directly in the TLB entry.
|
|
(tme_m68k_tlb_is_valid):
|
|
(tme_m68k_tlb_is_invalid): Added. Added a token and a bus context to
|
|
struct tme_m68k_tlb.
|
|
|
|
Sat Aug 29 01:35:17 2009 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* libtme/misc.c (_tme_misc_number_parse): Changed the G, M, and K
|
|
units from the powers of two to the powers of ten.
|
|
(tme_misc_cycles_scaled):
|
|
(tme_misc_cycles_scaling):
|
|
[!TME_HAVE_MISC_CYCLES_PER_MS] (tme_misc_cycles_per_ms):
|
|
[!TME_HAVE_MISC_CYCLES] tme_misc_cycles(): Added.
|
|
|
|
* libtme/host/x86/Makefile.am: Added misc-x86.c to EXTRA_DIST.
|
|
|
|
* libtme/host/x86/rc-x86-flags.c (_tme_recode_x86_flags_shift_add_add):
|
|
In addition to when the shift count is more than three, also do all
|
|
shifting when an shl instruction when there is no constant and no
|
|
addend register.
|
|
|
|
Fri Aug 28 01:50:09 2009 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* generic/bus-device.c (tme_bus_device_tlb_set_add): Added.
|
|
* host/gtk/gtk-display.h: Added tme_gtk_screen_full_redraw to struct
|
|
tme_gtk_screen.
|
|
|
|
* ic/ieee754/ieee754-ops-auto.sh: Now emit an op for to_int64.
|
|
|
|
* ic/sparc/sparc-rc-cc.c (_tme_sparc_recode_cc_init): Fixed bugs where
|
|
we weren't shifting the raw CCR and RCC register numbers to agree with
|
|
their eight-bit size. Fixed a bug where we weren't making the
|
|
conditions thunk for the internal RCC register.
|
|
|
|
* libtme/recode-impl.h: Added prototypes for
|
|
tme_recode_host_rw_thunk_new() and tme_recode_host_rw_thunk_dup().
|
|
|
|
Thu Aug 20 22:45:50 2009 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/sparc/sparc-rc-verify.c: Moved TME_SPARC_RECODE_VERIFY_IC_SIZE
|
|
before the TLBs. Added TME_STP103X_BLOCK_FPREGS_DOUBLE and struct
|
|
tme_sparc_recode_verify_mem_block, for verifying block loads and
|
|
stores.
|
|
In struct tme_sparc_recode_verify_mem, now track the PC for an access,
|
|
and any block load and store information. Changed all sparc state
|
|
globals to be the new struct tme_sparc_recode type, which includes
|
|
space for an IC-specific extension.
|
|
(_tme_sparc_recode_verify_mem_block):
|
|
(tme_sparc_recode_verify_mem_block): Added.
|
|
(tme_sparc_recode_verify_mem): Now verify the PC of an access, and any
|
|
block load and store.
|
|
(tme_sparc_recode_verify_reg_tick):
|
|
(tme_sparc_recode_verify_reg_tick_now): Added.
|
|
(tme_sparc_recode_verify_begin): Now copy any IC-specific extension
|
|
into the input and replay states. Now make the ITLB entry that the
|
|
replay will use, from the last ITLB entry used in the input state, and
|
|
also make one for tme_sparc_recode_insns_dump().
|
|
(tme_sparc_recode_verify_end): Now throw away any memory records for a
|
|
trapping PC. Clear the log level while replaying. Make the ITLB
|
|
entry that replay used unusable again. Added more registers and
|
|
controls to ignore. Now verify any IC-specific extension. Added
|
|
support for sparc64 register windows. Make sure we verified all of
|
|
the memory records.
|
|
(tme_sparc_recode_verify_init): Check the verify and total sizes for
|
|
this IC. Initialize all of the replay state TLB entries to be
|
|
unusable.
|
|
|
|
Thu Jun 18 01:16:53 2009 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/ad184x.c ic/stp2024.c ic/sparc/sparc-kgdb.c
|
|
ic/sparc/sparc-vis-auto.sh ic/sparc/sparc-vis.c:
|
|
|
|
Added.
|
|
|
|
* ic/sparc/sparc-rc-verify.c: Moved _tme_sparc_recode_verify_on to
|
|
sparc-recode.c.
|
|
(tme_sparc_recode_verify_mem): Fixed a bug where this was always
|
|
passed an ASI mask, but we thought it got an ASI.
|
|
(_tme_sparc_recode_verify_change): Added.
|
|
(tme_sparc_recode_verify_begin): Now call
|
|
_tme_sparc_recode_verify_change() to turn verifying on or off. Now
|
|
set the recode IC in the replay state.
|
|
(tme_sparc_recode_verify_end): No longer override changes to the old
|
|
TLB array pointers. Turned the override of the memory buffer into a
|
|
struct assignment. No longer use TME_SPARC_CWP_OFFSET().
|
|
(tme_sparc_recode_insns_dump): Now use TME_SPARC_TLB_HASH() and
|
|
TME_SPARC_ITLB_ENTRY() to get the instruction TLB entry.
|
|
|
|
* ic/sparc/stp103x.c: Removed the TME_STP103X_TTE_TAG_ macros, since
|
|
they weren't being used.
|
|
Now define TME_STP103X_ASI_DCACHE_DATA, TME_STP103X_ASI_DCACHE_TAG,
|
|
and TME_STP103X_ASI_BLK_COMMIT. Now define TME_STP103X_BLOCK_SIZE and
|
|
TME_STP103X_BLOCK_FPREGS_DOUBLE. Moved the GSR value from struct
|
|
tme_stp103x to struct tme_sparc. All users changed.
|
|
Added a missing static to _TME_SPARC_EXECUTE_OPMAP. Added
|
|
tme_sparc64_vis_ls_asi_pst and tme_sparc64_vis_ls_asi_fl to
|
|
_tme_stp103x_ls_asi_handlers[].
|
|
(_tme_stp103x_update_pstate): Fixed bugs where we weren't clearing all
|
|
of the global-register-selection bits in the PSTATE value before using
|
|
+ to set new bits. Now check that the selection isn't reserved.
|
|
(_tme_stp103x_impdep1): Added support for the VIS instructions.
|
|
(_tme_stp103x_tlb_invalidate): Added.
|
|
(_tme_stp103x_ls_cycle_quad): Fixed a bug where weren't checking the a
|
|
fast transfer TLB for a quad's worth. Now use the
|
|
TME_SPARC_LSINFO_ENDIAN_LITTLE indication from tme_sparc64_load(),
|
|
instead of figuring it out ourselves.
|
|
(_tme_stp103x_ls_asi_quad): Fixed a bug where we were checking for an
|
|
stda instruction instead of an ldda instruction.
|
|
(_tme_stp103x_ls_asi_tsb_ptr): Fixed a bug where we weren't shifting
|
|
the tag access register image into a TSB entry offset.
|
|
(_tme_stp103x_ls_asi_tlb_data_in): Fixed a bug where we weren't
|
|
invalidating a TLB entry before replacing it.
|
|
(_tme_stp103x_ls_asi_mmu_demap): Now use _tme_stp103x_tlb_invalidate()
|
|
to invalidate TLB entries.
|
|
(_tme_stp103x_ls_asi_dcache): Separate the code that handles writing
|
|
zero to a tag and the code that handles the special PROM writes.
|
|
Added support for reading tags, always as zero.
|
|
(_tme_stp103x_block_buffer_bswap):
|
|
(_tme_stp103x_ls_cycle_block_ld):
|
|
(_tme_stp103x_ls_cycle_block_st):
|
|
(_tme_stp103x_ls_asi_block): Added.
|
|
(_tme_stp103x_new): Now initialize tme_sparc_vis_ls_fault_illegal.
|
|
Added support for ASI_NUCLEUS_QUAD_LDD_LITTLE and the VIS partial
|
|
store and short load ASIs.
|
|
|
|
* ic/stp22xx/Makefile.am: Added stp222x-impl.h to EXTRA_DIST.
|
|
|
|
* ic/stp22xx/stp220x.c: Added a missing static to
|
|
_tme_stp2210_mc124x9_subregion.
|
|
(_tme_stp220x_tlb_fill_transition): Fixed a bug where we would return
|
|
a TLB entry that could handle read and write cycles, even if the
|
|
old-style TLB entry didn't support what the caller wasn't filling for.
|
|
|
|
* ic/stp22xx/stp222x-impl.h: Now track the active IDIs in struct
|
|
tme_stp222x. Added a prototype for tme_stp222x_mdu_intcon().
|
|
|
|
* ic/stp22xx/stp222x-main.c: Changed the obio offset for the audio IDI
|
|
to zero, to match the new stp2024 emulation.
|
|
(_tme_stp222x_signal): Now call tme_stp222x_mdu_intcon() to handle an
|
|
interrupt signal.
|
|
(_tme_stp222x_tlb_fill_transition): Fixed a bug where we would return
|
|
a TLB entry that could handle read and write cycles, even if the
|
|
old-style TLB entry didn't support what the caller wasn't filling for.
|
|
|
|
* ic/stp22xx/stp222x-mdu.c: Added the TME_STP222X_MDU_IDI_TEST macro.
|
|
(tme_stp222x_mdu_intcon): Added.
|
|
(tme_stp222x_mdu_regs_clear): If the IDI is being updated to received,
|
|
or if the IDI is still active in the interrupt contentrator, mark the
|
|
IDI is received.
|
|
|
|
* ic/stp22xx/stp22xx.c (tme_stp22xx_enter_master)
|
|
[TME_STP22XX_BUS_TRANSITION]: Before we enter, if we were making a bus
|
|
master cycle callout, find the completion and force it to be valid,
|
|
since the transition code may not get a chance to do that before we
|
|
are reentered by another master.
|
|
(tme_stp22xx_slave_cycle) [TME_STP22XX_BUS_TRANSITION]: Before we make
|
|
a bus master cycle callout, assume that the callout will complete
|
|
without error. When the callout returns, validate the completion only
|
|
if tme_stp22xx_enter_master() didn't do it.
|
|
|
|
Tue Jun 16 00:31:33 2009 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/Makefile.am: Added stp22xx, ncr89c105, stp2024, and ad184x.
|
|
|
|
Tue May 05 22:12:56 2009 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/stp22xx/stp222x-iommu.c:
|
|
* ic/stp22xx/stp222x-stc.c: Added.
|
|
|
|
Sat Feb 28 16:48:11 2009 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/ncr89c105.c ic/sparc/stp103x.c ic/stp22xx/Makefile.am
|
|
ic/stp22xx/stp220x.c ic/stp22xx/stp222x-asearch.c
|
|
ic/stp22xx/stp222x-aspace.c ic/stp22xx/stp222x-impl.h
|
|
ic/stp22xx/stp222x-main.c ic/stp22xx/stp222x-mdu.c
|
|
ic/stp22xx/stp222x-timer.c ic/stp22xx/stp22xx-impl.h
|
|
ic/stp22xx/stp22xx.c libtme/host/x86/misc-x86.c tme/completion.h
|
|
tme/bus/Makefile.am tme/bus/upa.h:
|
|
|
|
Added.
|
|
|
|
Fri Oct 03 00:48:18 2008 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/sparc/sparc-insns-auto.sh: In the load and store functions, added
|
|
support for verifying and replaying transfers for recode. In the slow
|
|
load and store functions, a TLB entry now has a token pointer that is
|
|
always defined, and we no longer have the tme_bus_tlb_global to point
|
|
a TLB entry back to itself. When recode is supported, call a function
|
|
to update the corresponding recode TLB entry.
|
|
|
|
Wed Sep 24 23:04:32 2008 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* Makefile.am (dist-hook): Now remove any
|
|
${distdir}/libtme/recode-host.c.
|
|
|
|
* ic/sparc/sparc-rc-ls.c libtme/recode-rws.c libtme/token.c
|
|
libtme/host/Makefile.am libtme/host/x86/Makefile.am
|
|
libtme/host/x86/rc-x86-rws.c tme/token.h tme/host/Makefile.am:
|
|
|
|
Added.
|
|
|
|
* libtme/host/x86/Makefile: Removed.
|
|
|
|
* tme/memory.h: Added tme_shared to the definition of
|
|
tme_memory_atomic_flag_t, and removed the requirement that a lock be
|
|
gived in calls to tme_memory_atomic_read_flag() and
|
|
tme_memory_atomic_write_flag(). Added tme_memory_atomic_init_flag().
|
|
|
|
* tme/generic/fb.h: Added members for the first and last bytes updated
|
|
in the real framebuffer memory.
|
|
|
|
Wed Jul 02 00:01:39 2008 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* libtme/host/x86/rc-x86-insns.c (_tme_recode_x86_insn_jump): A
|
|
TME_RECODE_OPCODE_JUMP instruction now always jumps somewhere. Any
|
|
alternate jump is taken if the jump recode flag is set. A jump jumps
|
|
to the instructions thunk epilogue if it can't be chained, otherwise
|
|
it jumps to the jump-chain sub.
|
|
(_tme_recode_x86_insn_size_max_check): Added.
|
|
(tme_recode_host_insns_thunk_new): Now call
|
|
tme_recode_insns_thunk_invalidate_all() when there is no space for
|
|
another instructions thunk.
|
|
|
|
* libtme/host/x86/rc-x86-regs.c (tme_recode_host_reg_move): Fixed a
|
|
bug found by -Wuninitialized where we wouldn't initialize
|
|
reg_x86_other for loads.
|
|
|
|
* libtme/host/x86/recode-x86.c (tme_recode_host_ic_new): The new
|
|
TME_RECODE_X86_OFFSET_JUMP_CHAIN_DIRECT offset in the jump chain subs
|
|
is used when the address of the jump to chain is already in the c
|
|
register, and the zero offset in the subs is used when the address of
|
|
the jump to chain is at the c register plus six
|
|
(the size of the 32-bit conditional alternate jump). After the
|
|
indirect jump at the end of the jump chain subs, emit an undefined
|
|
instruction, to avoid unnecessary speculation by the CPU. No longer
|
|
set the first variable thunk offset; machine-independent code does
|
|
that.
|
|
Call _tme_recode_x86_insn_size_max_check().
|
|
|
|
* tme/recode.h: Now define the TME_RECODE_JUMP_ options. Now define
|
|
TME_RECODE_INSNS_THUNK_INSNS_MAX. Added the
|
|
tme_recode_ic_thunk_off_variable member. Added a prototype for
|
|
tme_recode_insns_thunk_invalidate_all().
|
|
|
|
* tme/host/recode-mmap.h: Now define TME_RECODE_HOST_THUNK_SIZE_MAX.
|
|
|
|
* tme/host/recode-x86.h: Replaced TME_RECODE_HOST_THUNK_INSNS_MAX with
|
|
TME_RECODE_HOST_INSN_SIZE_MAX and moved TME_RECODE_HOST_THUNK_SIZE_MAX
|
|
to the host recode header that is providing the instructions thunk
|
|
memory. Replaced the tme_recode_x86_ic_thunk_off_variable member with
|
|
a machine-independent member.
|
|
|
|
Tue Jul 01 02:02:57 2008 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/sparc/sparc-rc-insns.c: Removed
|
|
TME_SPARC_RECODE_INSN_NO_UPDATE_PC_NEXT, since instructions that need
|
|
to update PC_next, now update both PC and PC_next themselves, instead
|
|
of relying on TME_SPARC_RECODE_INSN_UPDATE_PCS. Updated the recode
|
|
state flags for jumps. In various places, now track some statistics.
|
|
(_tme_sparc_recode_insn_assist_redispatch): Added.
|
|
(_tme_sparc_recode_insn_assist_store):
|
|
(_tme_sparc_recode_insn_assist_full): Before returning, call
|
|
_tme_sparc_recode_insn_assist_redispatch(), which will redispatch and
|
|
not return if the recode page for the instructions thunk is no longer
|
|
valid.
|
|
[_TME_SPARC_STATS] (_tme_sparc_recode_insns_total): Added.
|
|
(_tme_sparc_recode_recode): Don't update PC and PC_next automatically
|
|
at the beginning of each instructions thunk, just to make PC valid
|
|
from PC_next. Instead, track where the valid PC is, and update them
|
|
only for full assists and control transfer instructions. Now
|
|
calculate the worst-case position in the recode instructions buffer,
|
|
past which we may not be able to recode another instruction. In a few
|
|
places where we have to immediately stop recoding, we may have recoded
|
|
no instructions at all for the thunk. In this case, return zero
|
|
instead of calling abort(). It was too hard to get
|
|
TME_SPARC_RECODE_INSN_NO_UPDATE_PC_NEXT to work all of the time, so
|
|
now everywhere we need to update PC_next, update both PC and PC_next.
|
|
Now set the new recode flags for jumps, for the control transfer
|
|
instructions.
|
|
Fixed a bug where we would emit a sethi instruction even if it is
|
|
annulled in the delay slot of an unconditional branch. At the end of
|
|
the instructions thunk, emit a TME_RECODE_OPCODE_JUMP instruction.
|
|
|
|
* ic/sparc/sparc-rc-verify.c (tme_sparc_recode_verify_failed): No
|
|
longer abort(), so we can continue if needed.
|
|
(tme_sparc_recode_verify_begin): Added support for turning
|
|
verification on and off.
|
|
(tme_sparc_recode_verify_end): Added more fields to ignore in the bulk
|
|
comparison.
|
|
(tme_sparc_recode_insns_dump): Added.
|
|
|
|
* ic/sparc/sparc-recode.c: Moved the #include of the verify code after
|
|
tme_sparc_recode_invalidate_all(). Renamed the
|
|
tme_sparc_recode_src_key_offset_chain member to
|
|
tme_sparc_recode_chain_src_key_offset.
|
|
(tme_sparc_recode_invalidate_all): Added.
|
|
(_tme_sparc_recode_jump_chain) [_TME_SPARC_RECODE_VERIFY]: Stop
|
|
chaining only if the verifier is on.
|
|
(tme_sparc_recode): Now save the cacheable recode page. While an
|
|
instructions thunk is running, it may need to confirm that its page is
|
|
still valid.
|
|
(tme_sparc_recode_dump_insns): Updated the dump of
|
|
TME_RECODE_OPCODE_JUMP instructions.
|
|
|
|
* libtme/recode-conds.c (tme_recode_conds_thunk): Make sure the first
|
|
variable thunk goes after this conditions thunk.
|
|
|
|
* libtme/recode-flags.c (tme_recode_flags_thunk): Make sure the first
|
|
variable thunk goes after any instructions added for a flags thunk.
|
|
|
|
* libtme/recode-ic.c (tme_recode_ic_new): Make sure the first variable
|
|
thunk goes after any thunks made by tme_recode_host_ic_new().
|
|
|
|
* libtme/recode-impl.h: Renamed tme_recode_host_thunk_flush_all() to
|
|
tme_recode_host_thunk_invalidate_all().
|
|
|
|
* libtme/recode-insns.c (tme_recode_insns_thunk): Fixed a comment.
|
|
(tme_recode_insns_thunk_invalidate_all): Added.
|
|
|
|
* libtme/host/recode-mmap.c (tme_recode_host_thunk_flush_all): Renamed
|
|
to tme_recode_host_thunk_invalidate_all().
|
|
|
|
* libtme/host/x86/rc-x86-conds.c (tme_recode_host_conds_thunk_new): No
|
|
longer update the removed tme_recode_x86_ic_thunk_off_variable member.
|
|
|
|
* libtme/host/x86/rc-x86-flags.c (tme_recode_host_flags_thunk_new):
|
|
(_tme_recode_x86_flags_thunk_chain): No longer update the removed
|
|
tme_recode_x86_ic_thunk_off_variable member.
|
|
|
|
Mon Jun 30 22:42:10 2008 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* host/gtk/gtk-screen.c (_tme_gtk_screen_new): Fixed the
|
|
gtk_window_set_policy() arguments, so the top-level window always
|
|
grows and shrinks automatically.
|
|
|
|
Sun Jun 01 23:25:11 2008 Matt Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/sparc/sparc-rc-cc.c ic/sparc/sparc-rc-insns.c
|
|
ic/sparc/sparc-rc-verify.c ic/sparc/sparc-recode.c
|
|
libtme/recode-conds.c libtme/recode-flags.c libtme/recode-ic.c
|
|
libtme/recode-impl.h libtme/recode-insns.c libtme/recode-regs.c
|
|
libtme/host/recode-mmap.c libtme/host/x86/Makefile
|
|
libtme/host/x86/rc-x86-conds.c libtme/host/x86/rc-x86-flags.c
|
|
libtme/host/x86/rc-x86-insns.c libtme/host/x86/rc-x86-regs.c
|
|
libtme/host/x86/rc-x86-subs-asm.S libtme/host/x86/recode-x86.c
|
|
tme/recode.h tme/host/recode-mmap.h tme/host/recode-x86.h:
|
|
|
|
Added.
|
|
|
|
Thu Sep 06 23:35:41 2007 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* Release 0.6 out.
|
|
|
|
* TODO: Updated.
|
|
|
|
* ic/ncr53c9x.c: Fixed some comments.
|
|
(_tme_ncr53c9x_scsi_cycle): When we transfer in from the SCSI bus, if
|
|
we need to detect the the transfer residual based on the data
|
|
transferred, try to update the transfer residual.
|
|
|
|
* machine/sun4/sun44c-mmu.c (_tme_sun44c_buserr_common): A bus error
|
|
that is asynchronous for the CPU isn't reported as a hard fault to the
|
|
CPU, but if the initiator is another bus master, it is reported to
|
|
that master as a hard fault.
|
|
|
|
* scsi/scsi-tape.c (tme_scsi_tape_cdb_xfer0): In the NetBSD PR
|
|
pkg/34536 hack, only clear the Illegal Length Indicator (ILI) flag.
|
|
More importantly, this preserves the filemark flag, which is needed
|
|
for SunOS tape installs to work.
|
|
|
|
Sun Aug 26 14:02:04 2007 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* configure.in: Bumped version to 0.6.
|
|
Now check for the alignment of long, when it's 64 bits. Added support
|
|
for sun4 systems.
|
|
|
|
* ic/ieee754/ieee754-precision.sh: Added some missing ${prefix}es to
|
|
the variable names in the precision-independent statements.
|
|
|
|
Sat Aug 25 23:12:31 2007 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* generic/fb.c (_tme_fb_xlat_colors_get_set): If the colors that the
|
|
destination framebuffer needs to allocate don't depend on the source
|
|
framebuffer, return a colorset signature that destination framebuffers
|
|
can use to avoid reallocating the same set of colors repeatedly. When
|
|
the number of colors to allocate is clearly more than the destination
|
|
could ever allocate, and source pixels are mapped to intensities,
|
|
remove some of the less significant bits of the source intensities to
|
|
reduce the number of colors needed. Now give a distinct pixel value
|
|
for each distinct color we ask for, especially when we're asking for a
|
|
lot of duplicate colors as the result of reducing the range of the
|
|
source intensities (see above).
|
|
|
|
* host/gtk/gtk-display.c (_tme_gtk_display_menu_radio): Added.
|
|
|
|
* host/gtk/gtk-screen.c (_tme_gtk_screen_mode_change): Now only
|
|
reallocate the GdkImage when the framebuffer size changes, and the
|
|
colors when the final mapping from source color to destination pixel
|
|
changes. When allocating colors, now only allocate distinct colors.
|
|
(_tme_gtk_screen_submenu_scaling): Added.
|
|
(_tme_gtk_screen_new): Now use _tme_gtk_display_menu_radio() to create
|
|
the scaling submenu.
|
|
|
|
* ic/i825x6.c: Added a union to fix an aliasing problem with
|
|
TME_I825X6_RX_BUFFER_NEXT(). From skrll@netbsd.org.
|
|
(_tme_i825x6_rx_buffers_add): Now busy a TLB before checking if it's
|
|
valid and useful, and unbusy it for filling if it's not. After
|
|
filling it, loop to busy and check it again. When we're done with the
|
|
TLB entry, unbusy it.
|
|
(_tme_i825x6_callout_ca): When the receive unit is being started,
|
|
always abort it first, unless it was already idle. Before, we
|
|
wouldn't abort it if it was out of resources, which was wrong since
|
|
it's possible to run out of receive frame descriptors but not receive
|
|
buffers.
|
|
(_tme_i825x6_callout_cu): Don't abort() for a DIAGNOSE command. From
|
|
sigmfsk@aol.com in NetBSD PR pkg/35305.
|
|
(_tme_i825x6_signal): Don't assume that xor-ing the level out of the
|
|
signal value leaves only the base signal; use TME_BUS_SIGNAL_WHICH()
|
|
instead.
|
|
(_tme_i825x6_read): Keep track of the transmit packet's size in a new
|
|
variable, since the DMA read and write helper macros destroy rc. From
|
|
sigmfsk@aol.com in NetBSD PR pkg/35305.
|
|
|
|
* ic/z8530.c (_tme_z8530_channel_reset): On a hardware reset, clear
|
|
the IUS bits and reset RR2. Now take a pointer to the structure for
|
|
the whole chip, since some registers are common to both channels. All
|
|
callers changed.
|
|
(_tme_z8530_channel_init): Now take a pointer to the structure for the
|
|
whole chip, since some registers are common to both channels. All
|
|
callers changed.
|
|
(_tme_z8530_rr0_update): Fixed a bug where we would use the RR15 value
|
|
where we meant to use the WR15 value.
|
|
(_tme_z8530_rr2_update):
|
|
(_tme_z8530_int_pending): Added.
|
|
(_tme_z8530_intack): Now use _tme_z8530_int_pending() to see if an
|
|
interrupt is pending, and call _tme_z8530_rr2_update() to update RR2
|
|
and get the vector to use. Now check a socket flag to see if the IEI
|
|
pin is tied low.
|
|
(_tme_z8530_callout): Now use _tme_z8530_int_pending() to see if an
|
|
interrupt is pending.
|
|
(_tme_z8530_bus_cycle): When an interrupt is acknowledged, call
|
|
_tme_z8530_rr2_update() to update RR2.
|
|
|
|
* ic/m68k/m6888x-auto.sh: No longer use the IEEE754 sub function to
|
|
implement fcmp, use a specific m6888x function instead.
|
|
|
|
* ic/m68k/m6888x.c (tme_m68k_fpgen): Fixed a bug where a byte or word
|
|
source operand in a register would get sign-extended and stored back
|
|
into the register, destroying the other parts of the register.
|
|
(_tme_m6888x_fcmp): Added.
|
|
(tme_m68k_fmove_rm): We don't use TME_M68K_INSN_OP1(), so there's no
|
|
need to set _op1.
|
|
(tme_m68k_fmovem): Fixed a serious bug where we wouldn't advance the
|
|
effective address after storing the last 32-bit word of a register's
|
|
value.
|
|
(tme_m68k_fsave): Fixed a buffer overflow bug where we could write the
|
|
BIU flags outside of the frame structure.
|
|
|
|
* ic/m68k/m68k-insns-auto.sh: The cmpm, addx, and subx instructions
|
|
access the source operand before the destination operand, and we had
|
|
it backwards. Now generate the wrapper functions for a move of an
|
|
address register to a predecrement or postincrement EA with that same
|
|
address register.
|
|
(tme_m68k_movem_${name}${size}): Now calculate the total size of the
|
|
transfer early, so we can correctly emulate the behavior of storing
|
|
the same address register used in a predecrement EA on the different
|
|
CPUs.
|
|
(tme_m68k_moves${size}): Now when storing the same address register
|
|
used in a predecrement EA, store the original value. The BCD math
|
|
functions can only fault when they access memory, and they must
|
|
advance an address register right after it's used, in case the same
|
|
address register is used for the other operand.
|
|
|
|
* ic/m68k/m68k-insns.c (tme_m68k_tas): Removed the
|
|
TME_M68K_INSN_CANFAULT, since tme_m68k_rmw_start() does this if
|
|
needed.
|
|
(tme_m68k_cmp2_chk2): Fixed several bugs. From sigmfsk@aol.com in
|
|
NetBSD PR pkg/33969.
|
|
|
|
* ic/m68k/m68k-iset-expand.pl: As a special exception, expand a move
|
|
instruction that moves an address register into a predecrement or
|
|
postincrement EA with the same address register, to use a move wrapper
|
|
function.
|
|
|
|
* ic/m68k/m68k-iset.txt: Fixed a bug in decoding cas instructions -
|
|
their size field actually doesn't work like any other.
|
|
|
|
* ic/m68k/m68k-misc.c (tme_m68k_go_slow): Only make the first and last
|
|
valid fast pointers from the TLB entry if it supports fast reading.
|
|
(tme_m68k_rmw_start): Fixed a bug where we would mark an instruction
|
|
as possibly faulting, even when we wouldn't make any normal bus cycle
|
|
calls.
|
|
Corrected a byteswapping macro.
|
|
(tme_m68k_rmw_finish): Corrected a byteswapping macro.
|
|
|
|
* ic/m68k/m68k-opmap-make.pl: Now recognize the
|
|
move-same-address-register-to-predecrement and -postincrement
|
|
functions wherever the move function is recognized.
|
|
|
|
* libtme/threads-sjlj.c: In struct tme_sjlj_thread, when GTK is in use
|
|
track the current timeout handle, and have space for some fixed
|
|
timeout handles. We no longer track a single timeout tag, since
|
|
removing a timeout that hasn't fired yet may not prevent it from
|
|
firing. Now, for each file descriptor, track a different thread for
|
|
each file descriptor condition.
|
|
(tme_sjlj_threads_init): Initialize the file descriptor condition to
|
|
threads mapping.
|
|
(tme_sjlj_dispatch_timeout) [HAVE_GTK]: Now remove no longer used
|
|
timeouts when they occur naturally, and free their timeout handles.
|
|
(tme_sjlj_dispatch_fd): Now dispatch different threads depending on
|
|
the file descriptor conditions that are present.
|
|
(tme_sjlj_threads_run): Now always do a select, even if there are no
|
|
threads blocking on file descriptors. Now make a GdkInputCondition
|
|
value for each file descriptor that is ready, for
|
|
tme_sjlj_dispatch_fd().
|
|
(tme_sjlj_thread_create) [HAVE_GTK]: Now initialize the timeout
|
|
handles.
|
|
(tme_sjlj_yield): Now correctly track a different thread for each file
|
|
descriptor condition, since there are often different threads managing
|
|
the same file descriptor. When GTK is in use, timeouts can actually
|
|
expire up to 1ms early, so account for this, and no longer try to
|
|
remove an old timeout now, since it may still fire anyways. Instead,
|
|
allocate and use another timeout handle, which will be managed by
|
|
tme_sjlj_dispatch_timeout().
|
|
|
|
* machine/sun/sun-obie.c (_tme_sun_obie_bus_signal): Fixed a bug where
|
|
instead of managing the INTR bit in the CSR, we were just passing the
|
|
i82586's interrupt signal through to the mainbus. This was breaking
|
|
SunOS. Found by sigmfsk@aol.com in NetBSD PR pkg/35305. Now also
|
|
pass a reset signal from obio up to the i82586.
|
|
(_tme_sun_obie_connections_new): Now use _tme_sun_obie_bus_signal to
|
|
handle bus signals coming from obio.
|
|
|
|
* scsi/emulexmt02.c (_tme_emulexmt02_cdb_mode_sense): Now use
|
|
TME_EMULEXMT02_BLOCK_SIZE instead of the hard-coded constant.
|
|
(_tme_emulexmt02_cdb_mode_select): Avoid a gcc warning about a
|
|
comparison whose result is always known due to the limited range of a
|
|
type.
|
|
(tme_scsi_tape_emulexmt02_init): Now provide the fixed block size to
|
|
the machine-independent code.
|
|
|
|
* scsi/scsi-cdb.c (tme_scsi_device_mode_select_data): Added.
|
|
(_tme_scsi_device_make_inquiry_string): Fixed a type to get better
|
|
type agreement. From tsutsui@ceres.dti.ne.jp in NetBSD PR pkg/34113.
|
|
|
|
* scsi/scsi-tape.c (tme_scsi_tape_cdb_xfer0): Don't pad out a block
|
|
with zeroes if the filemark indication is set.
|
|
(_tme_scsi_tape_mode_select_data):
|
|
(tme_scsi_tape_cdb_mode_select): Avoid a gcc warning about a
|
|
comparison whose result is always known due to the limited range of a
|
|
type.
|
|
|
|
* tme/generic/fb.h: Now define TME_FB_COLORSET_NONE.
|
|
|
|
Sat Aug 25 19:52:23 2007 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* host/gtk/gtk-display.h: Now store a colorset signature in struct
|
|
tme_gtk_screen. Define struct tme_gtk_display_menu_item, and added a
|
|
prototype for _tme_gtk_display_menu_radio().
|
|
|
|
Fri Aug 24 01:21:50 2007 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* acinclude.m4 (AC_CHECK_ALIGNOF): Some compilers will do a smaller
|
|
read than you expect, if they know that the value read will only be
|
|
used at a smaller size later. A little math on the value read
|
|
discourages this.
|
|
(AC_CHECK_SHIFTMAX): Don't create the center value with one
|
|
expression, which would do the shifting in type int. Defeat any
|
|
constant optimizations on the shift count by using sscanf to
|
|
initialize it.
|
|
|
|
* generic/float-auto.sh (tme_float_infinity_${_builtin_type}):
|
|
(tme_float_negative_zero_${_builtin_type}): Added.
|
|
(tme_float_radix${radix}_mantissa_exponent_${_builtin_type}): If the
|
|
value is a zero, just return the same value. Fixed a bug where we
|
|
would return a mantissa that was exactly the radix (instead of
|
|
reducing it again to 1).
|
|
|
|
* host/posix/posix-serial.c (_tme_posix_serial_th_ctrl): If a TIOCMGET
|
|
ioctl fails, be sure to use a zero modem state instead of garbage.
|
|
|
|
* ic/am7930.c (_tme_am7930_bus_cycle): Fixed a bug where we used
|
|
TME_BUS16_LOG2 but the device is only eight bits wide.
|
|
|
|
* ic/ieee754/ieee754-misc-auto.sh (tme_ieee754_${precision}_value_to_builtin):
|
|
Use the new tme_float_infinity_${_builtin_type}() and
|
|
tme_float_negative_${_builtin_type}() functions to get built-in
|
|
infinities and negative zeroes.
|
|
(tme_ieee754_${precision}_value_from_builtin): Detect a negative zero
|
|
using a bit-for-bit comparison to a positive zero, since the C
|
|
equality operator may treat all zeroes as equal. Fixed a bug where
|
|
roundup in a builtin-to-integer cast would affect the conversion.
|
|
Removed an extraneous assignment to factor in the shell script.
|
|
|
|
* ic/sparc/sparc-misc.c (tme_sparc32_dump_memory): To avoid an
|
|
assertion failure with TLB lock debugging turned on, now save, set,
|
|
and restore the busy flag on the DTLB entry that the load function
|
|
will use (assuming that it will only use one).
|
|
|
|
* machine/sun2/sun2-mainbus.c (tme_machine_sun2,zs): Override the
|
|
default z8530 socket flags - on a sun2, the IEI lines are tied low.
|
|
|
|
* machine/sun3/SUN3-CARRERA: Removed the "delay 10000" option from
|
|
bpf1, to speed things up in general - however it is still needed when
|
|
netbooting NetBSD, to avoid a race condition in the kernel RARP client
|
|
(when the RARP response comes back before the tsleep() starts, the
|
|
wakeup() is lost).
|
|
|
|
* machine/sun3/sun3-mainbus.c (machine/sun3/sun3-mainbus.c): Now
|
|
propagate a reset signal from the m68k out to the busses.
|
|
|
|
* tme/threads.h: Now include <sys/time.h>.
|
|
|
|
* tme/generic/float.h: Added prototypes for
|
|
tme_float_infinity_${_builtin_type}() and
|
|
tme_float_negative_zero_${_builtin_type}().
|
|
|
|
* tme/ic/z8530.h: Started a set of socket flags, and added the
|
|
tme_z8530_socket_flags to struct tme_z8530_socket.
|
|
|
|
* tme/machine/sun.h: In TME_SUN_Z8530_SOCKET_INIT, supply a default
|
|
value for the z8530 socket flags.
|
|
|
|
Thu Mar 29 01:56:40 2007 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* generic/fb-xlat-auto.sh: Fixed bugs where we would use the wrong
|
|
masks with TME_FB_XLAT_MAP_LINEAR_SCALE() when we needed to scale
|
|
large intensities down into a lookup range,
|
|
|
|
* host/posix/posix-serial.c (_tme_posix_serial_th_reader): If we get
|
|
EOF, exit the thread.
|
|
|
|
* ic/m68k/m68k-impl.h: Keep the m68k TLB array pointers in unions with
|
|
regular bus TLB pointers, to avoid any aliasing problems when
|
|
allocating them.
|
|
|
|
* ic/m68k/m68k-misc.c (_tme_m68k_connection_make): When allocating the
|
|
m68k TLB arrays, pass pointers to the regular bus TLB pointers in
|
|
unions in struct tme_m68k, to avoid any aliasing problems.
|
|
|
|
* ic/sparc/sparc-execute.c (_TME_SPARC_EXECUTE_NAME): Cast a constant
|
|
to an unsigned type to silence a gcc warning.
|
|
|
|
* ic/sparc/sparc-impl.h: Keep the sparc TLB array pointers in unions
|
|
with regular bus TLB pointers, to avoid any aliasing problems when
|
|
allocating them.
|
|
|
|
* ic/sparc/sparc-insns-auto.sh: In the jmpl instructions, cast a
|
|
constant to an unsigned type to silence a gcc warning.
|
|
|
|
* ic/sparc/sparc-insns.c (tme_sparc32_rdpsr):
|
|
(tme_sparc32_wrpsr): Cast constants to an unsigned type to silence a
|
|
gcc warning.
|
|
|
|
* ic/sparc/sparc-misc.c (_tme_sparc_connection_make): When allocating
|
|
the TLB arrays, pass pointers to the regular bus TLB pointers in
|
|
unions in struct tme_sparc, to avoid any aliasing problems.
|
|
(tme_sparc32_trap): Cast a constant to an unsigned type to silence a
|
|
gcc warning.
|
|
(tme_sparc32_dump_memory): Added.
|
|
|
|
* machine/sun/sun-fb.c (TME_SUNFB_S4_REG): Added.
|
|
(tme_bt458_omap_best): Fixed a bug where we would use the final loop
|
|
counter as the best colormap index.
|
|
(_tme_sunfb_callout): Reworked to handled failed callouts better, and
|
|
added support for calling out framebuffer interrupts.
|
|
(_tme_sunfb_callout_thread): The callout thread is now always present,
|
|
running when a condition is notified.
|
|
(tme_sunfb_memory_update): Now notify the callout thread to call out
|
|
an interrupt if one is now pending.
|
|
(tme_sunfb_bus_cycle_bt458): Now support 8-bit and 32-bit accesses.
|
|
Schedule a mode change callout whenever the colormap or overlay map
|
|
changes. Fixed bugs where we wouldn't read and write the bt458
|
|
register set correctly.
|
|
(tme_sunfb_bus_cycle_s4): If a write covers the status register, clear
|
|
any pending interrupt. Call _tme_sunfb_callout() to make any
|
|
callouts.
|
|
(tme_sunfb_new): Initialize the callout thread condition, and create
|
|
the callout thread.
|
|
(tme_sun_cgthree): Set the correct sunfb flags for a cgthree. Fixed a
|
|
bug where we wouldn't initialize the bt458 colormap pointers to point
|
|
to the colormap.
|
|
|
|
* machine/sun/sun-fb.h: Since the callout thread is always present,
|
|
removed the flag that marked when it was. Added flags for specifying
|
|
which byte in a 32-bit access to an 8-bit register is used. In struct
|
|
tme_sunfb now track whether or not the framebuffer interrupt is
|
|
asserted, added a condition for notifying the callout thread, and
|
|
added an alias for the first S4 basic register.
|
|
|
|
* machine/sun/sun-keyboards.txt: Removed the acute keysym from the US
|
|
type 4 keyboard. Its definition is the same as apostrophe, and it was
|
|
causing problems on hosts that actually have acute. This is really a
|
|
bug in the keyboard emulation.
|
|
|
|
* machine/sun4/SUN4-75: Many changes.
|
|
|
|
* machine/sun4/sun44c-cache.c (_tme_sun44c_cache_new): Cast some
|
|
expressions in comparisons to an unsigned type, to silence a gcc
|
|
warning.
|
|
|
|
* machine/sun4/sun44c-control.c (_tme_sun44c_control_cycle_handler):
|
|
Cast a promoted expression to an unsigned type in a ternary operator
|
|
expression to silence a gcc warning.
|
|
|
|
* scsi/scsi-cdrom.c (tme_scsi_cdrom_cdb_read_toc):
|
|
(tme_scsi_cdrom_cdb_mode_sense): Cast some expressions to unsigned
|
|
types to silence a gcc warning.
|
|
|
|
Sun Mar 25 21:18:50 2007 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* dist/softfloat/softfloat/bits64/softfloat.c (float128_rem): Added a
|
|
cast to get better type agreement. From tsutsui@ceres.dti.ne.jp in
|
|
NetBSD PR pkg/34113.
|
|
|
|
* generic/bus-el.c (_tme_bus_intack): Now unlock the bus before
|
|
calling a device's interrupt acknowledge function, to avoid a
|
|
deadlock.
|
|
|
|
* ic/am7990.c (_tme_am7990_receive): Added a cast to avoid a
|
|
signed/unsigned comparison.
|
|
|
|
Sat Mar 03 15:36:15 2007 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* host/gtk/gtk-mouse.c (_tme_gtk_mouse_mouse_event): Now discard
|
|
double- and triple-click button events, since normal button press and
|
|
release events are always generated also.
|
|
|
|
* machine/sun/sun-cgtwo.c (_tme_suncg2_callout): Fixed a bug where we
|
|
tested the wrong variable for the mode change callout bit.
|
|
|
|
Wed Feb 21 01:52:28 2007 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* host/bsd/bsd-bpf.c (_tme_bsd_bpf_callout): Now check that the packet
|
|
being written has a reasonable size, and that the write succeeds.
|
|
From sigmfsk@aol.com in NetBSD PR pkg/35305.
|
|
|
|
* host/gtk/gtk-display.h: Changed the signedness of the
|
|
tme_gtk_screen_mouse_warp_x and tme_gtk_screen_mouse_warp_y members to
|
|
get better type agreement. From tsutsui@ceres.dti.ne.jp in NetBSD PR
|
|
pkg/34113.
|
|
|
|
* host/gtk/gtk-mouse.c: Changed some types to get better type
|
|
agreement. From tsutsui@ceres.dti.ne.jp in NetBSD PR pkg/34113.
|
|
|
|
* host/gtk/gtk-screen.c (_tme_gtk_gdkimage_scanline_pad): Removed the
|
|
if that tests for the eight-bit case. This avoids a gcc4 warning
|
|
about a possible missing return value, even though the possibility of
|
|
that was zero.
|
|
|
|
* ic/i825x6reg.h: The size mask in an i82586 TBD is 0x3fff (it's
|
|
0x7fff on a i82596). From sigmfsk@aol.com in NetBSD PR pkg/35305.
|
|
|
|
* ic/ncr53c9x.c (_tme_ncr53c9x_stimreg_msec): Fixed a gcc4 warning.
|
|
|
|
* ic/ieee754/ieee754-ops-auto.sh: Now perform negation by multiplying
|
|
the source operand by -1, which correctly negates 0.0 into -0.0. From
|
|
sigmfsk@aol.com in NetBSD PR pkg/34616.
|
|
|
|
* ic/m68k/m68k-execute.c (_TME_M68K_EXECUTE_NAME): Simplified how
|
|
PC-relative EAs are calculated. This should fix NetBSD PR pkg/34538.
|
|
|
|
* ic/sparc/sparc-misc.c (tme_sparc_new): Increased the instruction
|
|
burst size to 800.
|
|
(tme_sparc_do_reset): Now poison all idle type state to force the idle
|
|
type to retrain, since we may be booting a new kernel.
|
|
|
|
* libtme/module.c (tme_module_open): Changed the signedness of
|
|
tokens_count to get better type agreement. From
|
|
tsutsui@ceres.dti.ne.jp in NetBSD PR pkg/34113.
|
|
|
|
* machine/sun/sun-si.c (_tme_sun_si_bus_cycle_regs): Fixed an
|
|
uninitialized variable bug that wasn't noticed by gcc3, because the
|
|
value was never used. From tsutsui@ceres.dti.ne.jp in NetBSD PR
|
|
pkg/34113.
|
|
(tme_sun_si): Changed a type to get better type agreement. From
|
|
tsutsui@ceres.dti.ne.jp in NetBSD PR pkg/34113.
|
|
|
|
* tme/memory.h (tme_memory_atomic_pointer_write): Fixed a bug where we
|
|
tried to use a ternary operator expression as an lvalue.
|
|
|
|
Fri Feb 16 02:50:23 2007 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* host/bsd/bsd-bpf.c (_tme_bsd_bpf_read): Fixed a bug where we would
|
|
drop packets or pass garbage packets because we weren't using
|
|
BPF_WORDALIGN() to determine the offset of the next packet. Added
|
|
code to try to detect and strip off any CRC accidentally passed up
|
|
through BPF from a host network device driver.
|
|
|
|
* ic/m68k/m68010.c (_tme_m68010_rte): A zero returned by
|
|
tme_m68k_sequence_fill() or tme_m68k_insn_buffer_fill() also means a
|
|
format error.
|
|
|
|
* ic/m68k/m68020.c (_tme_m68020_rte): A zero returned by
|
|
tme_m68k_sequence_fill() or tme_m68k_insn_buffer_fill() also means a
|
|
format error.
|
|
|
|
* ic/m68k/m68k-execute.c ic/m68k/m68k-impl.h
|
|
ic/m68k/m68k-insns-auto.sh ic/m68k/m68k-insns.c
|
|
ic/m68k/m68k-misc-auto.sh ic/m68k/m68k-misc.c:
|
|
|
|
Although I hate doing this, many changes to convert the m68k
|
|
emulation to the new TLB and memory discipline. This has mainly
|
|
affected fast instruction fetching and memory access. Fast
|
|
instruction fetches now happen directly into the instruction buffer,
|
|
with some optimizations to lessen the penalty for that. Fast
|
|
fetches are now kept entirely out of the transfer accounting, and
|
|
the functions that empty and fill the instruction buffer from an
|
|
exception frame are also simpler now.
|
|
All memory access functions now busy and unbusy a TLB entry and use
|
|
the generic memory access functions when doing fast transfers.
|
|
The tme_m68k_rmw_start() and tme_m68k_rmw_finish() are completely
|
|
changed for the new TLB discipline. All of the atomic instructions
|
|
are also completely changed. All callouts are now wrapped in
|
|
tme_m68k_callout_unlock() and tme_m68k_callout_relock(), which will
|
|
unbusy and rebusy any instruction TLB entry for the fast executor,
|
|
and poison the fast executor if that TLB entry is now invalid.
|
|
|
|
Thu Feb 15 02:15:41 2007 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* generic/keyboard.c (_tme_keysym_state_get):
|
|
(tme_keyboard_buffer_in_macro):
|
|
(tme_keyboard_buffer_out_map):
|
|
(tme_keyboard_buffer_out_mode):
|
|
(_tme_keyboard_buffer_in2):
|
|
(_tme_keyboard_buffer_in0): Use tme_keyboard_hash_data_from_keyval()
|
|
to convert a tme_keyboard_keyval_t to a tme_hash_data_t.
|
|
|
|
* host/gtk/gtk-keyboard.c (_tme_gtk_keyboard_x11_new):
|
|
(_tme_gtk_keyboard_key_event): Use
|
|
tme_keyboard_hash_data_from_keyval() and
|
|
tme_keyboard_hash_data_to_keyval() to convert between
|
|
tme_keyboard_keyval_t and tme_hash_data_t.
|
|
|
|
* machine/sun/sun-bwtwo.c: Removed much code, which became the new
|
|
generic Sun framebuffer code. The remaining bwtwo code now uses this
|
|
generic support. Added support for the SBus bwtwo.
|
|
|
|
* machine/sun/sun-cgtwo.c (_tme_suncg2_validate_bitmaps):
|
|
(_tme_suncg2_validate_pixmap): Don't attempt to translate using
|
|
unsigned longs on 64-bit hosts.
|
|
(_tme_suncg2_mode_change): Don't try to make any sense of the case
|
|
where the pixel colors don't select any bitmap. In this case, or when
|
|
multiple bitmaps seem to be selected, just display the pixmap.
|
|
|
|
* machine/sun2/sun2-control.c (_TME_SUN2_REG_ACCESSED): Silence a
|
|
warning about comparing an unsigned quantity to be greater than or
|
|
equal to zero. This would happen on 64-bit big-endian systems, due to
|
|
their particular struct tme_ic register layout.
|
|
|
|
* machine/sun2/sun2-mmu.c (_tme_sun2_mmu_reset): Now busy and
|
|
unbusy-fill the reset TLBs, so they are marked valid.
|
|
|
|
* machine/sun4/sun4-impl.h: Added a prototype for _tme_sun4_reset().
|
|
|
|
* machine/sun4/sun4-mainbus.c (_tme_sun4_reset): Added.
|
|
(_tme_sun4_command): Now use _tme_sun4_reset() to do the reset.
|
|
(tme_machine_sun4): Fixed the usage string.
|
|
|
|
* machine/sun4/sun44c-control.c (_tme_sun44c_control_cycle_handler): A
|
|
write to the software reset bit in the enable register clears all
|
|
other bits in the register, and now call _tme_sun4_reset() to do the
|
|
reset.
|
|
|
|
* scsi/scsi-bus.c (_tme_scsi_bus_cycle): Skip any SCSI connection that
|
|
isn't waiting on any events and has no actions to take.
|
|
|
|
* tme/hash.h: Added macros for converting between tme_hash_data_t and
|
|
some integral types.
|
|
|
|
* tme/generic/ethernet.h: Define some Ethernet packet types.
|
|
|
|
* tme/generic/keyboard.h: Added macros to convert between a keyval and
|
|
a tme_hash_data_t.
|
|
|
|
* tme/scsi/scsi-cdb.h: Define extended sense key, ASC, and ASCQ
|
|
values. Define struct tme_scsi_device_mode_blocks and give a
|
|
prototype for tme_scsi_device_mode_select_data().
|
|
|
|
Mon Feb 12 23:50:36 2007 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* generic/bus.c (tme_bus_tlb_map): Fixed a word-size bug, where the
|
|
address offset was kept as a tme_bus_addr_t. Since this offset can be
|
|
negative, and it's used in pointer arithmetic, it has to be a signed
|
|
long.
|
|
|
|
* generic/fb-xlat-auto.sh (TME_FB_XLAT_SHIFT_DST): Now detect when we
|
|
shifted a tme_uint32_t by 32 on an architecture where SHIFTMAX_INT32_T
|
|
is less than 32, and force the shifted result to zero.
|
|
|
|
* ic/ncr5380.c (_tme_ncr5380_bus_tlb_fill): Fixed a bug where we
|
|
wouldn't notice a TLB that was invalid.
|
|
|
|
* ic/ieee754/ieee754-misc-auto.sh (tme_ieee754_${precision}_value_builtin_set):
|
|
When rewriting x to be an infinity, don't set the float format until
|
|
the end, because we still need to test the original format x's sign.
|
|
After converting a native result to the best native format for the
|
|
IEEE754 precision, don't forget to update x's float format.
|
|
(tme_ieee754_${precision}_value_to_builtin): When the format has an
|
|
explicit integer bit, don't treat it as a fraction bit when the
|
|
exponent is the biased maximum.
|
|
|
|
* ic/m68k/m68k-bus-auto.sh: Fixed a bug where tme_m68k_router_32 was
|
|
defined static.
|
|
|
|
* ic/sparc/sparc-misc-auto.sh: Make sure that TME_SPARC_IREG_FPX is
|
|
aligned to four, since it is often used as a register pair, and the
|
|
ldd/std functions expect the first register of a pair (and later, some
|
|
quad load/store functions) to be aligned.
|
|
|
|
* machine/sun/sun-si.c (_tme_sun_si_tlb_fill_regs): Fixed a bug where
|
|
we were filling TLBs that supported fast reading. We can't support
|
|
fast reading, because we have to fault on byte accesses, to support
|
|
the SunOS sc/si probes.
|
|
|
|
Tue Jan 30 22:57:08 2007 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/am7990.c (_tme_am7990_init): Now log the init. Fixed a bug where
|
|
we wouldn't start reading the Ethernet again after exiting loopback
|
|
mode.
|
|
(_tme_am7990_start): Now log the start.
|
|
(_tme_am7990_receive): Append dummy CRC bytes to each received frame.
|
|
Log receive MISS and BUFF errors.
|
|
(_tme_am7990_transmit): Log transmit BUFF errors.
|
|
(_tme_am7990_bus_cycle): Log writes to CSRs other than CSR0.
|
|
|
|
Sun Jan 21 15:45:01 2007 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* libtme/misc.c (tme_misc_tokenize):
|
|
(_tme_misc_number_parse): Don't use the ctype macros with a char,
|
|
since it will be sign-extended to an int.
|
|
|
|
* libtme/module.c (tme_module_open): Don't use the ctype macros with a
|
|
char, since it will be sign-extended to an int.
|
|
|
|
* serial/serial-kb.c (tme_serial_,kb,keyboard): Don't use the ctype
|
|
macros with a char, since it will be sign-extended to an int.
|
|
|
|
Fri Jan 19 01:01:07 2007 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* host/gtk/gtk-display.h: In struct tme_gtk_display, track the next
|
|
keysym to try in the unused keysym allocator.
|
|
|
|
* host/gtk/gtk-keyboard.c (_tme_gtk_keyboard_lookup): Don't consider a
|
|
conversion of a string to a keysym successful unless the keysym
|
|
reverses to that same string.
|
|
Fixed a bug in the code that tries to allocate an unused keysym for an
|
|
unknown string, where we would repeatedly allocate the first unused
|
|
keysym over and over again.
|
|
|
|
* ic/sparc/sparc-impl.h: Increased the size of the ITLB hash.
|
|
|
|
* ic/sparc/sparc-insns-auto.sh: Now emit code in the load and store
|
|
functions to track DTLB fills under _TME_SPARC_STATS.
|
|
|
|
* machine/sun/sun-keyboards.txt: Added a map for the US type 4
|
|
keyboard.
|
|
|
|
* scsi/cdrom-tme.c:
|
|
* scsi/scsi-cdrom.c:
|
|
* tme/scsi/scsi-cdrom.h: Added.
|
|
|
|
* scsi/scsi-device.c (tme_scsi_device_check_condition): Added.
|
|
|
|
* tme/scsi/scsi-device.h: Added a prototype for
|
|
tme_scsi_device_check_condition().
|
|
|
|
Thu Jan 18 02:15:49 2007 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* tme/common.h: Added definitions of __tme_predict_true() and
|
|
__tme_predict_false() for gcc>=2.96.
|
|
|
|
Sun Jan 14 16:53:04 2007 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* generic/bus-el.c (tme_generic,bus): Fixed a printf string. Some
|
|
changes to silence gcc -Wuninitialized.
|
|
|
|
* ic/sparc/Makefile.am: Added sparc-fpu-auto.sh to EXTRA_DIST.
|
|
|
|
* ic/sparc/sparc-execute.c (_TME_SPARC_EXECUTE_NAME): In NetBSD 3.x,
|
|
the idle loop wrpsrs use %l1 instead of %g1, and the annulled wrpsr
|
|
writes IPL_SCHED << 8, not PSR_PIL.
|
|
|
|
* ic/sparc/sparc-fpu-auto.sh: Removed the parameter lists from some
|
|
macro #undefs.
|
|
|
|
* ic/sparc/sparc-fpu.c (tme_sparc_fpu_new): Removed the parameter list
|
|
from a macro #undef.
|
|
|
|
* ic/sparc/sparc-insns.c (tme_sparc32_wrpsr): Updated the
|
|
netbsd32-type-0 idle type comment.
|
|
|
|
* ic/sparc/sparc-misc.c (tme_sparc_new): Increased the burst size.
|
|
|
|
* libtme/threads-sjlj.c (tme_sjlj_yield) [HAVE_GTK]: Fixed a bug where
|
|
we could round the number of microseconds to a whole second and leave
|
|
it that way.
|
|
|
|
* machine/Makefile.am: Added the sun4 directory to DIST_SUBDIRS.
|
|
|
|
* machine/sun/sun-fb.c (tme_bt458_omap_best): Fixed a bug caught by
|
|
gcc -Wuninitialized.
|
|
|
|
* scsi/Makefile.am: Added scsi-cdrom.c and cdrom-tme.c to
|
|
tme_scsi_la_SOURCES.
|
|
|
|
* scsi/scsi-tape.c (_tme_scsi_tape_mode_select_data): Fixed a bug
|
|
caught by gcc -Wuninitialized.
|
|
|
|
* tme/scsi/Makefile.am: Now install scsi-cdrom.h.
|
|
|
|
Mon Jan 08 00:59:04 2007 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* bus/Makefile.am: Added sbus to DIST_SUBDIRS.
|
|
|
|
* bus/sbus/Makefile.am:
|
|
* bus/sbus/sun-fbs4.c:
|
|
* tme/ic/bt458.h: Added.
|
|
|
|
* generic/scsi.c (tme_scsi_phase_resid): Added.
|
|
|
|
* ic/Makefile.am: Added sparc to DIST_SUBDIRS.
|
|
Now build tme_ic_ncr53c9x.la, tme_ic_mk48txx.la, tme_ic_nec765.la,
|
|
tme_ic_am7930.la, tme_ic_am7990.la, and tme_ic_lsi64854.la.
|
|
|
|
* ic/ncr53c9x.c: Added tme_ncr53c9x_transfer_resid_detect_state to
|
|
struct tme_ncr53c9x, for detecting the SCSI transfer residual while
|
|
data is being transferred.
|
|
(_tme_ncr53c9x_cs_monitor_phase): Now take a new argument that will
|
|
force the phase to be checked, even if there isn't any SCSI transfer
|
|
residual. All callers changed.
|
|
(_TME_NCR53C9X_CS_MONITOR_PHASE): Now check the phase immediately.
|
|
(_TME_NCR53C9X_CS_TRANSFER): Now initialize the transfer residual
|
|
detect state to zero.
|
|
(_tme_ncr53c9x_update): In TME_NCR53C9X_CMD_TRANSFER, fixed bugs for
|
|
the MESSAGE IN phase, and simplified the sequence for the MESSAGE OUT
|
|
phase. Fixed many bugs for all of the target selection commands.
|
|
(_tme_ncr53c9x_callout): When we're detecting the transfer residual
|
|
while data is being transferred, we can't transfer more than one byte
|
|
at a time from a TLB that only supports slow reading, and also call
|
|
tme_scsi_phase_resid() to do the detection.
|
|
Don't hold ACK on a transfer unless it definitely includes the last
|
|
byte of the transfer.
|
|
(_tme_ncr53c9x_scsi_cycle): Fixed a bug where we wouldn't note an
|
|
automatically asserted ACK or ATN in the active SCSI cycle.
|
|
(_tme_ncr53c9x_bus_cycle): Fixed a bug where we wouldn't add to the
|
|
data FIFO at the head.
|
|
|
|
* ic/nec765.c (_tme_nec765_bus_cycle): More correctly alias reads and
|
|
writes to register number two on an i82072 to the MSR and DRS,
|
|
respectively. This allows both the NetBSD fdc and the SunOS fd
|
|
drivers to work.
|
|
|
|
* ic/sparc/sparc-execute.c: Now define tme_sparc_idle_type_pc
|
|
appropriately for the version.
|
|
(_TME_SPARC_EXECUTE_NAME): When we begin a new instruction burst, if
|
|
the first instruction in the burst is the beginning of the idle loop,
|
|
go idle.
|
|
Check an annulled instruction for the netbsd32-type-0 idle type.
|
|
Check a branch for the sunos32-type-0 idle type. Fixed a bug where
|
|
repeated annulled instructions could cause the instruction burst to
|
|
never finish.
|
|
|
|
* ic/sparc/sparc-fpu-auto.sh: Avoid a gcc -Wuninitialized warning by
|
|
setting fpreg_rd_format even for an unimplemented operation.
|
|
|
|
* ic/sparc/sparc-impl.h: Added support for idle types.
|
|
|
|
* ic/sparc/sparc-insns-auto.sh: In the slow read and write functions,
|
|
fixed a bug found by gcc -Wuninitialized in the unusual case where
|
|
this cycle is part fast, part slow, where we would use use an
|
|
uninitialized resid.
|
|
|
|
* ic/sparc/sparc-insns.c (tme_sparc32_rdasr): To avoid a gcc
|
|
-Wuninitialized warning, for an unimplemented rdasr set value to zero
|
|
even though we abort().
|
|
(tme_sparc32_rdpsr): Added support for the sunos32-type-0 idle type.
|
|
(tme_sparc32_wrpsr): Added support for the sunos32-type-0 and
|
|
netbsd32-type-0 idle types.
|
|
|
|
* ic/sparc/sparc-misc.c (_tme_sparc_command):
|
|
(tme_sparc_do_idle): tme_sparc_fetch_nearby): Added.
|
|
(tme_sparc_new): Now set _tme_sparc_command to handle commands.
|
|
Poison the initial idle type state.
|
|
|
|
* machine/sun/sun-cgtwo.c: Use the new generic tme_sunfb_ functions
|
|
and macros instead of the older tme_sun_fb_p4_ functions.
|
|
|
|
* machine/sun/sun-fb.c: Replaced the old tme_sun_fb_p4_ functions with
|
|
the new generic tme_sunfb_ functions, and added support for more
|
|
sizes.
|
|
Added all of the new generic Sun framebuffer support, including some
|
|
out-of-place Bt458 support.
|
|
(tme_sun_cgthree): Added.
|
|
|
|
* machine/sun/sun-fb.h: Removed most of the P4-specific definitions.
|
|
Added many definitions for a generic Sun framebuffer, including some
|
|
P4 and S4 specifics.
|
|
|
|
* machine/sun4/sun4-mainbus.c (tme_machine_sun4,bwtwo):
|
|
(tme_machine_sun4,si):
|
|
(tme_machine_sun4,cgtwo): Removed.
|
|
|
|
* scsi/scsi-bus.c (_tme_scsi_bus_cycle): Added an assert to the
|
|
bulk-copy code to check that the target is always in sequence step
|
|
one.
|
|
|
|
* scsi/scsi-device.c (_tme_scsi_device_cycle): Now log the message in
|
|
a MESSAGE_OUT phase. Now extended messages have their own dispatch
|
|
array.
|
|
(tme_scsi_device_target_mc): Added.
|
|
(tme_scsi_device_new): By default, a new device will reject
|
|
synchronous negotiation.
|
|
|
|
* scsi/scsi-msg.c (tme_scsi_device_msg_target_reject): Added.
|
|
|
|
* tme/generic/scsi.h: Added the prototype for tme_scsi_phase_resid().
|
|
|
|
* tme/ic/Makefile.am: Added bt458.h to tmeicinclude_HEADERS.
|
|
|
|
* tme/machine/sun.h: Added a prototype for tme_sun_cgthree().
|
|
|
|
* tme/scsi/scsi-device.h: Now define TME_SCSI_DEVICE_DO_MSG_EXT().
|
|
Added a dispatch array for extended messages to struct
|
|
tme_scsi_device.
|
|
Now declare tme_scsi_device_target_mc().
|
|
|
|
* tme/scsi/scsi-msg.h: Now define TME_SCSI_MSG_EXT_SDTR. Now declare
|
|
tme_scsi_device_msg_target_reject().
|
|
|
|
Sun Nov 26 16:37:55 2006 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* generic/bus.c (tme_bus_tlb_fill): Fixed bugs in the support for bus
|
|
connections with nonzero sourced-address masks.
|
|
|
|
* ic/am7930.c:
|
|
* ic/am7990.c: Added.
|
|
|
|
* ic/mk48txx.c (_tme_mk48txx_bus_cycle): Added support for a
|
|
platform's year zero.
|
|
|
|
* ic/ieee754/ieee754-misc-auto.sh: Removed the simple
|
|
tme_ieee754_PRECISION_to_int32 functions in favor of the ops versions.
|
|
|
|
* ic/ieee754/ieee754-ops-auto.sh: Now emit ops for from_int32 and
|
|
from_int64. Now allow an op to override the type of its first source
|
|
operand. Made the generation of the preprocessor condition more
|
|
general. Added some more support for integral source operands. Fixed
|
|
a bug in substituting in softfloat function names.
|
|
|
|
* ic/sparc/sparc-fpu-auto.sh: Fixed the ops that convert between
|
|
integer and floating-point to use the regular IEEE754 ops.
|
|
|
|
* machine/sun4/sun4-mainbus.c (tme_machine_sun4,clock): Now set the
|
|
sun4 year zero in the mk48txx socket.
|
|
|
|
* scsi/scsi-bus.c (_tme_scsi_bus_callout): Now clear the actions and
|
|
events for a connection before they are called out, to prevent calling
|
|
them out again.
|
|
Added support for the cycle marker bit.
|
|
(_tme_scsi_bus_cycle): Added support for the cycle marker bit. Added
|
|
support for TME_SCSI_ACTION_SELECT_WITH_ATN and
|
|
TME_SCSI_ACTION_DMA_INITIATOR_HOLD_ACK. Moved the bulk DMA copy code
|
|
inside the slow initiator DMA code. This allows the normal target and
|
|
initiator slow DMA code to always handle the boundaries of a transfer,
|
|
which (especially in the initiator hold ACK case) can be important.
|
|
|
|
* scsi/scsi-tape.c: Added the tme generic SCSI-1 tape to the list.
|
|
(tme_scsi_tape_cdb_xfer0): Added a big hack to quickly fix NetBSD PR
|
|
pkg/34536.
|
|
(_tme_scsi_tape_mode_select_data): Added.
|
|
(tme_scsi_tape_cdb_block_limits):
|
|
(tme_scsi_tape_cdb_mode_select): Implemented.
|
|
|
|
* tme/common.h: Replaced the old TME_FIELD_MASK_EXTRACTS macros with a
|
|
single smarter version.
|
|
Now TME_FIELD_MASK_DEPOSITU masks the value being deposited.
|
|
|
|
* tme/memory.h [!TME_THREADS_COOPERATIVE]: Now define
|
|
TME_MEMORY_BUS_BOUNDARY to be sizeof(tme_uint8_t), to avoid some
|
|
compiler warnings when the previous value of zero was used in some
|
|
comparisons.
|
|
|
|
* tme/generic/ethernet.h: Fixed a bug where the source address field
|
|
was named tme_ethernet_header_size.
|
|
|
|
* tme/generic/scsi.h: Renumbered the SCSI actions to allow for future
|
|
expansion, and also to add TME_SCSI_ACTION_DMA_INITIATOR_HOLD_ACK,
|
|
TME_SCSI_ACTION_SELECT_WITH_ATN, and TME_SCSI_ACTION_CYCLE_MARKER.
|
|
|
|
* tme/ic/mk48txx.h: Added tme_mk48txx_socket_year_zero to the socket
|
|
structure.
|
|
|
|
* tme/scsi/scsi-device.h: Expanded tme_scsi_device_data to 256 bytes,
|
|
to hold a large MODE SELECT parameter list.
|
|
|
|
Thu Nov 16 02:54:40 2006 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* generic/bus-el.c (_tme_bus_connections_new): Added support for the
|
|
'slot', 'offset', 'controller', and 'dma-offset' arguments.
|
|
(TME_ELEMENT_SUB_NEW_DECL(tme_generic,bus)): Added real argument
|
|
processing, and added support for the arguments that define bus slots.
|
|
|
|
* generic/bus.c (tme_bus_tlb_fill): If this bus has a controller, and
|
|
the TLB fill request isn't from the controller, pass the TLB fill on
|
|
to the controller.
|
|
(tme_bus_connection_make): Added support for making a connection to a
|
|
bus controller.
|
|
|
|
* generic/ethernet.c (tme_ethernet_chunks_copy): Made the destination
|
|
chunks structures const.
|
|
(tme_ethernet_crc32_el): Added.
|
|
|
|
* ic/lsi64854.c ic/ncr53c9x.c ic/nec765.c machine/sun4/sun4-fdc.c
|
|
scsi/tape-tme.c tme/ic/nec765.h:
|
|
|
|
Added.
|
|
|
|
* ic/ncr5380.c (_tme_ncr5380_signal): Now use TME_BUS_SIGNAL_WHICH()
|
|
to remove the flags from a bus signal.
|
|
|
|
* ic/z8530.c (_tme_z8530_channel_reset): Now have
|
|
TME_Z8530_RR1_ALL_SENT in the reset value for RR1.
|
|
(_tme_z8530_bus_cycle): Now clear TME_Z8530_RR1_ALL_SENT when transmit
|
|
data is written.
|
|
(_tme_z8530_read): Now set TME_Z8530_RR1_ALL_SENT when all transmit
|
|
data has been written.
|
|
|
|
* ic/ieee754/ieee754-misc-auto.sh: Now emit prototypes for the
|
|
functions that convert floats to 32-bit integers.
|
|
|
|
* ic/ieee754/ieee754-misc.c (tme_ieee754_fpreg_format): Added.
|
|
|
|
* ic/sparc/cy7c601.c (TME_ELEMENT_X_NEW_DECL(tme_ic_,sparc,cy7c601)):
|
|
The common CY7C601 has a PSR version of 1. Use the default slow
|
|
instruction fetch function.
|
|
|
|
* ic/sparc/mb86900.c (TME_ELEMENT_X_NEW_DECL(tme_ic_,sparc,mb86900)):
|
|
Use the default slow instruction fetch function.
|
|
|
|
* ic/sparc/sparc-execute.c (_TME_SPARC_EXECUTE_NAME): Now save the ASI
|
|
mask for instructions in the CPU state.
|
|
Now fetch all instructions with tme_memory_bus_read32(), which gives
|
|
all needed behavior (when threads are cooperative,
|
|
tme_memory_atomic_read32 means a function call). Now log call
|
|
instructions, which makes reconstructing code flow possible.
|
|
|
|
* ic/sparc/sparc-fpu.c (tme_sparc_fpu_new): Fixed a bug where the FPU
|
|
version wasn't being put into the FSR.
|
|
|
|
* ic/sparc/sparc-impl.h: Now define TME_SPARC_SLOW_FLAG_INSN and
|
|
TME_SPARC_SLOW_FLAG_NO_FAULTS for the slow load and store functions.
|
|
Now _tme_sparc_bus_fault/tme_sparc32_bus_fault get the flags passed to
|
|
the slow load/store function. Added a prototype for
|
|
tme_sparc32_fetch_slow().
|
|
|
|
* ic/sparc/sparc-insns-auto.sh: For the instructions that have
|
|
add-style condition codes, changed the calculation of C to match the
|
|
V8 architecture manual. In the memory access instructions, instead of
|
|
using a tme_memory_atomic_ function, use a tme_memory_bus_ function,
|
|
which is how it should always have been. Log jmpl instructions that
|
|
act as call or return instructions, which makes reconstructing code
|
|
flow possible. In the slow load/store functions, use the ASI mask for
|
|
instructions if the instruction flag is specified, and allow the
|
|
CPU-specific bus fault handler to cancel a fault.
|
|
|
|
* ic/sparc/sparc-insns.c (tme_sparc32_rett): Fixed a bug where a user
|
|
PS wasn't restored into S correctly. Fixed a bug where we wouldn't
|
|
redispatch after changing the PSR.
|
|
(tme_sparc32_ticc): Fixed a bug where we thought the trap number was
|
|
in rd, instead of from rs1 + rs2.
|
|
|
|
* ic/sparc/sparc-misc.c (tme_sparc32_fetch_slow): Added.
|
|
(tme_sparc32_bus_fault): When a fault happens during an instruction
|
|
fetch, ignore the fault if we're supposed to, otherwise return an
|
|
instruction access exception instead of a data access exception.
|
|
|
|
* libtme/module.c (_tme_modules_find): Fixed a bug where we wouldn't
|
|
check the LTDL_SHLIBPATH_VAR directory for modules.
|
|
|
|
* libtme/threads-sjlj.c (tme_sjlj_cond_sleep_yield): Added.
|
|
|
|
* machine/sun/sun-mmu.c: In struct tme_sun_mmu, added members for MMUs
|
|
with an address space hole.
|
|
(tme_sun_mmu_new): If this MMU has an address space hole, adjust the
|
|
number of address bits and save a mask with the last significant
|
|
address bit set.
|
|
(_tme_sun_mmu_lookup): If this MMU has an address space hole, and the
|
|
address to look up is in the hole, return the hole PTE.
|
|
(tme_sun_mmu_pte_set):
|
|
(tme_sun_mmu_segmap_get):
|
|
(tme_sun_mmu_segmap_set): Handle addresses in an address space hole.
|
|
(tme_sun_mmu_tlb_fill): Fixed a bug in the previous commit that would
|
|
not remember TLBs filled from invalid PTEs for later invalidation when
|
|
those PTEs are made valid. However, don't remember TLBs filled in the
|
|
address hole.
|
|
|
|
* machine/sun/sun-si.c (_tme_sun_si_tlb_fill): Now use
|
|
tme_bus_tlb_initialize() to make a TLB entry passed on the stack
|
|
invalid, since tme_bus_tlb_invalidate() assumes that the TLB's locks
|
|
have been constructed.
|
|
|
|
* machine/sun4/Makefile.am: Added sun4-fdc.c to
|
|
tme_machine_sun4_la_SOURCES.
|
|
|
|
* machine/sun4/sun4-mainbus.c (_tme_sun4_connections_new): Only fill
|
|
the TLB set allocator on a bus connection for an actual bus, not the
|
|
other devices.
|
|
|
|
* machine/sun4/sun4-timer.c (_tme_sun4_timer_reset): Fixed a
|
|
TME_SUN4_IS_SUN4C to TME_SUN4_IS_SUN44C.
|
|
(_tme_sun4_timer_cycle_control): Fixed a bug where we had the counter
|
|
values counting down, not up. Fixed a TME_SUN4_IS_SUN4C to
|
|
TME_SUN4_IS_SUN44C. Now log for all registers, and make the minimum
|
|
log level much higher to filter out these messages.
|
|
|
|
* machine/sun4/sun44c-mmu.c (_tme_sun44c_buserr_log): On a sun4c, add
|
|
0xf0000000 to the physical address displayed.
|
|
(_tme_sun44c_tlb_fill_mmu):
|
|
(_tme_sun44c_tlb_fill_pte): Before a TLB has been filled, it has no
|
|
fault handlers, and since the TLB might be on the stack its handler
|
|
count is garbage, so always thread the initiator's bus connection down
|
|
as the first fault handler private value.
|
|
|
|
* scsi/Makefile.am: Added tape-tme.c to tme_scsi_la_SOURCES.
|
|
|
|
* scsi/scsi-device.c (tme_scsi_device_target_phase): Bumped the log
|
|
level for the various data phases so it's easier to filter the
|
|
messages out.
|
|
(_tme_scsi_device_cycle): Fixed a bug in handling the length byte of
|
|
an extended message.
|
|
|
|
* serial/Makefile.am: Added serial-sink.c to tme_serial_kb_la_SOURCES.
|
|
|
|
* tme/Makefile.am: Replaced atomics.h with memory.h in
|
|
pkginclude_HEADERS.
|
|
|
|
* tme/connection.h: Now define TME_CONNECTION_BUS_SPARC.
|
|
|
|
* tme/threads.h: Now define TME_THREADS_COOPERATIVE to TRUE. Now
|
|
define tme_thread_suspend_others() and tme_thread_resume_others().
|
|
[!TME_NO_DEBUG_LOCKS]: When __FILE__ and __LINE__ aren't defined,
|
|
fixed a bug where we would pass in NULL for __LINE__, instead of zero.
|
|
Added a prototype for tme_sjlj_cond_sleep_yield(), and the
|
|
tme_cond_sleep_yield() macro. Removed the old atomic memory access
|
|
support.
|
|
|
|
* tme/generic/bus.h: Now define
|
|
TME_BUS_CONNECTION_INT_FLAG_ADDRESSABLE and
|
|
TME_BUS_CONNECTION_INT_FLAG_CONTROLLER. Now define struct
|
|
tme_bus_slot. In struct tme_bus, keep a list of struct tme_bus_slot,
|
|
and track up to one bus connection that is the "controller" of the
|
|
bus.
|
|
|
|
* tme/generic/ethernet.h: Added a const to the prototype for
|
|
tme_ethernet_chunks_copy(), and added a prototype for
|
|
tme_ethernet_crc32_el().
|
|
|
|
* tme/generic/ic.h: Quadrupled the value of TME_IC_REGS_SIZE, to
|
|
support the SPARC emulations and their large register sets. In struct
|
|
tme_ic, fixed the definitions for the 64-bit register members, to
|
|
divide the TME_IC_REGS_SIZE by eight instead of sixteen.
|
|
|
|
* tme/ic/Makefile.am: Added sparc.h, mk48txx.h, and nec765.h to
|
|
tmeicinclude_HEADERS.
|
|
|
|
* tme/ic/ieee754.h: Now define macros describing an IEEE754 register
|
|
file. Added a prototype for tme_ieee754_fpreg_format().
|
|
|
|
* tme/machine/sun.h: Now define TME_SUN_IDPROM_OFF_MACHTYPE, and
|
|
macros for some possible machine and architecture types. In struct
|
|
tme_sun_mmu_info, added tme_sun_mmu_info_topindex_bits, for describing
|
|
either the number of top address bits for region, or for the address
|
|
hole.
|
|
|
|
* tme/scsi/scsi-tape.h: In struct tme_scsi_tape, added members for
|
|
describing the minimum, maximum, and current block sizes.
|
|
|
|
* tmesh/tmesh-cmds.c (_tmesh_command_alias): Added.
|
|
(tmesh_eval): Now dispatch an 'alias' command.
|
|
|
|
* tmesh/tmesh-impl.h: Now define TMESH_COMMAND_ALIAS.
|
|
|
|
* tmesh/tmesh-input.y: Added support for scanning and parsing the new
|
|
'alias' command.
|
|
|
|
Sat Sep 30 13:48:38 2006 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* bus/multibus/3c400.c bus/multibus/sun-mie.c bus/multibus/sun-sc.c
|
|
generic/bus-device-auto.sh generic/bus-device.c generic/bus-el.c
|
|
generic/bus.c host/posix/posix-memory.c host/posix/posix-serial.c
|
|
ic/am9513.c ic/i825x6.c ic/isil7170.c ic/mm58167.c ic/ncr5380.c
|
|
ic/z8530.c libtme/Makefile.am libtme/memory-auto.sh
|
|
machine/sun/sun-bwtwo.c machine/sun/sun-cgtwo.c
|
|
machine/sun/sun-mmu.c machine/sun/sun-obie.c machine/sun/sun-si.c
|
|
machine/sun2/sun2-impl.h machine/sun2/sun2-mmu.c
|
|
machine/sun3/sun3-impl.h machine/sun3/sun3-mmu.c tme/connection.h
|
|
tme/memory.h tme/tme.h tme/generic/bus-device.h tme/generic/bus.h
|
|
tme/ic/m68k.h tme/machine/sun.h:
|
|
|
|
Changed how atomic values are handled. Removed the TME_ATOMIC_ set
|
|
of macros, which may or may not use a rwlock to serialize access to
|
|
a value, and added the tme_memory_atomic_ set of macros, which
|
|
always requires an rwlock argument.
|
|
This tme_memory_atomic_ set of macros also takes a compile-time
|
|
minimum alignment hint, covers a wide range of math operations, and
|
|
is guaranteed to work atomically for any access, no matter what the
|
|
actual alignment.
|
|
Added the tme_memory_bus_ set of macros, which work just like the
|
|
tme_memory_atomic_ macros but only within a certain bus size - i.e.,
|
|
if a 32-bit bus size is specified, and an access crosses one
|
|
32-bit-aligned address boundary, the access will be split into two
|
|
atomic accesses.
|
|
The tme_memory_atomic_ and tme_memory_bus_ macros should better
|
|
enable emulation on a non-cooperative threading host someday. Added
|
|
the tme_memory_ set of macros, which don't access memory atomically
|
|
but still take the same compile-time minimum-alignment hint and are
|
|
guaranteed to work for any actual alignment. This has caused
|
|
significant fallout in all TLB handling, since the first and last
|
|
address fields in a TLB were previously TME_ATOMICs, and TLBs were
|
|
invalidated by atomically updating these first to be greater than
|
|
last.
|
|
This method would not have worked in a non-cooperative threading
|
|
host. First, it was impossible to update both first and last
|
|
address fields simultaneously, and second, it was impossible to know
|
|
if anyone was using, or had committed to using, the TLB while you
|
|
were invalidating it. Without knowing that the TLB can't be used
|
|
after invalidation, the invalidator can't continue and make other
|
|
changes that would give incorrect behavior if the TLB *is* actually
|
|
used later.
|
|
So, TLBs have a new discipline. They have "busy" and "invalid"
|
|
atomic flags. Before a TLB entry is used, its busy flag is marked
|
|
true, and its invalid flag is checked. If the invalid flag is true,
|
|
the TLB is unbusied and prepared for filling (see
|
|
tme_bus_tlb_unbusy_fill() and tme_bus_tlb_invalidate() for how they
|
|
synchronize and avoid interesting races), otherwise the TLB entry is
|
|
valid and won't be invalidated until its busy flag is set to false.
|
|
To make this truly thread-safe, someday all slow bus cycle handlers
|
|
will have to take a TLB entry somehow, so they can correctly busy
|
|
the TLB entry before making the access.
|
|
|
|
* generic/ethernet.c generic/keyboard.c generic/mouse.c
|
|
libtme/element.c scsi/acb4000.c serial/serial-kb.c:
|
|
|
|
Now explicitly include errno.h.
|
|
|
|
* host/bsd/bsd-bpf.c host/posix/posix-tape.c serial/serial-kb.h
|
|
serial/serial-ms.h tme/scsi/scsi-device.h:
|
|
|
|
Now explicitly include tme/threads.h.
|
|
|
|
* ic/mk48txx.c ic/sparc/Makefile.am ic/sparc/cy7c601.c
|
|
ic/sparc/mb86900.c ic/sparc/sparc-bus-auto.sh
|
|
ic/sparc/sparc-execute.c ic/sparc/sparc-fpu-auto.sh
|
|
ic/sparc/sparc-fpu.c ic/sparc/sparc-impl.h
|
|
ic/sparc/sparc-insns-auto.sh ic/sparc/sparc-insns.c
|
|
ic/sparc/sparc-misc-auto.sh ic/sparc/sparc-misc.c
|
|
machine/sun4/Makefile.am machine/sun4/SUN4-75
|
|
machine/sun4/sun4-impl.h machine/sun4/sun4-mainbus.c
|
|
machine/sun4/sun4-timer.c machine/sun4/sun44c-cache.c
|
|
machine/sun4/sun44c-control.c machine/sun4/sun44c-memerr.c
|
|
machine/sun4/sun44c-mmu.c serial/serial-sink.c tme/ic/mk48txx.h
|
|
tme/ic/sparc.h:
|
|
|
|
Added.
|
|
|
|
* machine/sun3/sun3-mainbus.c (_tme_sun3_command): Fixed a bug where
|
|
we wouldn't reset the VME bus.
|
|
|
|
* tme/atomics.h: Removed.
|
|
|
|
Sun Dec 04 22:53:37 2005 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/ncr5380.c: Fixed a bug in the TME_NCR5380_REG_PUT macro.
|
|
(_tme_ncr5380_reg_put): Now declared static.
|
|
(_tme_ncr5380_callout): Fixed a comment. Fixed a bug where we
|
|
wouldn't set the residual in the SCSI DMA structure.
|
|
|
|
* ic/m68k/m68k-execute.c (_TME_M68K_EXECUTE_NAME): Fixed a bug where
|
|
we would call the slow executor inside a return() statement.
|
|
|
|
* machine/sun/sun-cgtwo.c (_tme_suncg2_validate_bitmaps): Fixed a bug
|
|
where we were processing the pixmap into the bitmaps from
|
|
left-to-right, instead of from right-to-left like the individual pixel
|
|
bit translation requires.
|
|
|
|
* machine/sun/sun-si.c (tme_sun_si): Now fail and display the usage if
|
|
no si type is given. Fixed the usage string.
|
|
|
|
Sat Jun 11 13:47:23 2005 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* machine/sun/sun-mmu.c: Removed the invalid segment member of the MMU
|
|
structure, since the hardware doesn't have the notion of an invalid
|
|
segment.
|
|
(tme_sun_mmu_new): Now initialize the segment map with the last PMEG
|
|
number.
|
|
(tme_sun_mmu_pte_get):
|
|
(tme_sun_mmu_pte_set):
|
|
(tme_sun_mmu_segmap_set): Removed checks for the invalid segment.
|
|
|
|
* machine/sun2/sun2-mmu.c (_tme_sun2_mmu_new): Now zero the MMU
|
|
information structure first, and don't provide the invalid segment
|
|
number.
|
|
|
|
* machine/sun3/sun3-mmu.c (_tme_sun3_mmu_new): Now zero the MMU
|
|
information structure first, and don't provide the invalid segment
|
|
number.
|
|
|
|
* tme/machine/sun.h: Removed tme_sun_mmu_info_seginv from struct
|
|
tme_sun_mmu_info.
|
|
|
|
Sun May 15 01:24:11 2005 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* Release 0.4 out.
|
|
|
|
* configure.in: Fixed a bug where StaticGray, StaticColor, and
|
|
PseudoColor visuals would be considered indexed. This would cause the
|
|
translation functions to incorrectly try to map intensities into pixel
|
|
subfields.
|
|
|
|
Sat May 14 22:28:29 2005 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* TODO: Updated.
|
|
|
|
* acinclude.m4 (AC_CHECK_FUNC_LONG): Added.
|
|
|
|
* configure.in: Now check for sys/bswap.h, bswap16(), and bswap32().
|
|
Now check for isinff().
|
|
Instead of taking a set of host display formats in the environment
|
|
variable TME_DISPLAYS, now take the configure argument
|
|
--with-tme-host-displays. When debugging is disabled, to get best
|
|
performance now define macros that preprocess out a lot of debugging
|
|
code. Debugging now defaults to disabled.
|
|
|
|
* generic/float.c [!HAVE_ISINFF] (isinff): Added.
|
|
|
|
* host/gtk/gtk-screen.c (_tme_gtk_screen_mode_change): Now initially
|
|
try to allocate new colors. For any colors that fail, try to allocate
|
|
best-match colors. Warn if even best-match colors could not be
|
|
allocated.
|
|
|
|
* ic/ieee754/ieee754-misc.c: Declare more single- and double-precision
|
|
constants.
|
|
|
|
* tme/common.h: Now include <sys/bswap.h> for the byteswapping
|
|
functions. When the host is big-endian, try to use bswap16() and
|
|
bswap32() for byteswapping functions, otherwise define them. Now
|
|
define little-endian conversion functions on big-endian hosts.
|
|
|
|
* tme/generic/float.h: Corrected some HAVE_ macros to _TME_HAVE_
|
|
macros. Now include float.h and limits.h. Added a prototype for
|
|
isinff().
|
|
|
|
Sat May 14 19:18:42 2005 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* generic/fb-xlat-auto.sh: Fixed a bug in the initialization of
|
|
dst_masks_default, that was causing incorrect halving translation on
|
|
PseudoColor hosts.
|
|
|
|
* host/gtk/gtk-keyboard.c (_tme_gtk_keyboard_lookup): Fixed a bug in
|
|
the warning message when a keysym can't be generated by the host
|
|
keyboard.
|
|
|
|
* ic/ieee754/Makefile.am: Added -lm to libtme_ieee754_la_LDFLAGS.
|
|
|
|
* ic/m68k/m68k-opmap-dump.c:
|
|
* machine/sun3/sun3-carrera-eeprom.txt: Added.
|
|
|
|
* ic/m68k/m68k-opmap-make.pl: The previous opcode map functions were
|
|
too big (or complicated?) to be compiled in a reasonable amount of
|
|
time on slower machines. Now compress the functions down by
|
|
initializing similar roots close to each other, and in groups whenever
|
|
possible. This cuts down on the amount of params[] refilling and
|
|
function calls, and decreases the size of m68k-opmap.c by almost half.
|
|
|
|
* machine/sun3/Makefile.am: Added sun3-carrera-eeprom.txt to
|
|
examples_DATA.
|
|
|
|
* serial/serial-kb.c (_tme_serial_kb_connection_make): When a keyboard
|
|
macro can't be parsed, instead of aborting, just log a complaint.
|
|
|
|
Sat May 14 01:43:33 2005 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* acinclude.m4 (AC_CHECK_FLOAT_FORMAT): Fixed a tme_uint16_t, which
|
|
was causing failures on big-endian systems.
|
|
|
|
* ic/ieee754/softfloat-tme.c: Swapped some declarations that were with
|
|
the wrong comments.
|
|
|
|
* tme/ic/ieee754.h: Declare more single- and double-precision
|
|
constants.
|
|
|
|
Wed May 11 00:15:42 2005 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* dist/softfloat/softfloat/bits64/softfloat-macros (add192):
|
|
(sub192): Fixed some gcc3 signed/unsigned comparison warnings.
|
|
|
|
* dist/softfloat/softfloat/bits64/softfloat.c (roundAndPackFloatx80):
|
|
Fixed a gcc3 signed/unsigned comparison warning.
|
|
|
|
* ic/i825x6.c (_tme_i825x6_callout_ru):
|
|
(_tme_i825x6_callout): Fixed some gcc3 signed/unsigned comparison
|
|
warnings.
|
|
|
|
* ic/ieee754/ieee754-misc-auto.sh: Fixed a gcc3 signed/unsigned
|
|
comparison warning.
|
|
|
|
* machine/sun3/sun3-mainbus.c (_tme_sun3_bus_intack): Make signal
|
|
unsigned, to fix gcc3 signed/unsigned comparison warnings.
|
|
|
|
* tme/generic/float.h (tme_float_is_negative): Fixed all conditional
|
|
arms to be conditional expressions, to keep the type of the whole
|
|
expression int.
|
|
|
|
Tue May 10 11:15:26 2005 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* machine/sun3/SUN3-CARRERA: Disable obie0 by default.
|
|
|
|
Tue May 10 00:38:19 2005 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* host/gtk/gtk-keyboard.c (_tme_gtk_keyboard_attach): Connect the
|
|
key_press and key_release events with gtk_signal_connect_after, so we
|
|
can stop the event from propagating up to parents, where a GtkWindow
|
|
parent will do strange things with arrow key presses.
|
|
|
|
* ic/isil7170.c (_tme_isil7170_bus_cycle): Fixed an off-by-one bug in
|
|
the month register.
|
|
|
|
* machine/sun3/SUN3-CARRERA: Disable the serial console by default.
|
|
|
|
Mon May 09 02:01:02 2005 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* machine/sun/sun-cgtwo.c (_tme_suncg2_bus_cycle_regs): Wrap the
|
|
rasterop register log in #ifndef TME_NO_LOG, since the rasterop
|
|
register names array doesn't exist otherwise.
|
|
|
|
Mon May 09 01:59:03 2005 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* generic/ethernet.c (tme_ethernet_chunks_copy): Fixed a bug where the
|
|
size of the destination buffer would get loaded with the size of the
|
|
source buffer.
|
|
|
|
* generic/fb.c (_tme_fb_xlat_colors_get_set): Fixed a bug where the
|
|
number of colors allocated wasn't being saved.
|
|
|
|
* ic/i825x6.c (_tme_i825x6_fbl_refill): Now tolerate a Receive Buffer
|
|
with zero size.
|
|
(_tme_i825x6_callout_ru): Initialize rbd_size early, since its value
|
|
is decreased early when a fake receive buffer is made from the RFD
|
|
Ethernet header space.
|
|
|
|
Sat Apr 30 15:22:25 2005 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* configure.in: Now determine the default display depth with xwininfo
|
|
-root, assuming that the root window is at the default depth. If the
|
|
depth is greater than one, also determine the visual class and any
|
|
subfield masks, and include this information in the destination image
|
|
key. Add support for color framebuffer images on the sun3.
|
|
|
|
* generic/bus.c (_tme_bus_cycle_xfer_resp_least_lane):
|
|
(tme_bus_cycle_xfer_reg): Added.
|
|
|
|
* generic/fb-xlat-auto.sh: Added support for color source and
|
|
destination images.
|
|
|
|
* generic/fb.c (tme_fb_xlat_best):
|
|
(tme_fb_xlat_is_optimal): Now consider source image class, mapping
|
|
type, mapping size, and subfield masks, and destination image mapping
|
|
type and subfield masks.
|
|
(_tme_fb_xlat_colors_get_set):
|
|
(tme_fb_xlat_colors_get):
|
|
(tme_fb_xlat_colors_set): Added.
|
|
|
|
* host/gtk/gtk-display.h: Removed the monochrome invert mask from
|
|
struct tme_gtk_display. Inversion is now specified by the
|
|
framebuffer.
|
|
|
|
* host/gtk/gtk-screen.c (_tme_gtk_screen_mode_change): Added color
|
|
support. Now we determine the destination image class, mapping, and
|
|
any subfield masks. We choose a translation function based on image
|
|
classes, mappings, and subfield masks, and allocate colors on behalf
|
|
of the translation function.
|
|
|
|
* ic/m68k/m68020.c (_tme_m68020_exception): Fixed a bug where a 32-bit
|
|
fetch wasn't marking the B stage as faulted.
|
|
|
|
* ic/m68k/m68k-execute.c (_TME_M68K_EXECUTE_NAME): Fixed a bug with
|
|
the instruction buffer. Before, when the slow executor would take a
|
|
fault in the middle of a 32-bit instruction fetch, the successfully
|
|
fetched first 16 bits wouldn't get put in the instruction buffer by
|
|
the fault processing, because a fetch was only accounted for once it
|
|
fully succeeded. When the fetch was resumed, the first 16 bits was
|
|
lost. Now, a slow executor fetch is accounted for before it begins,
|
|
which guarantees that any partially fetched instruction makes it into
|
|
the instruction buffer.
|
|
|
|
* ic/m68k/m68k-misc-auto.sh: Now, we update the instruction buffer
|
|
fetch total and sizes values before we do the actual fetch, because we
|
|
may transfer a few bytes and then fault. Without this, those few
|
|
bytes wouldn't get saved in the exception stack frame by
|
|
tme_m68k_insn_buffer_xfer(), because it wouldn't know about the fetch.
|
|
Later, when the instruction would be resumed, tme_m68k_fetch32() won't
|
|
refetch them, because it knows they've already been fetched and thinks
|
|
they're still in the instruction buffer.
|
|
|
|
* machine/sun/Makefile.am: Now build sun-cgtwo.c for
|
|
libtme_machine_sun.la.
|
|
|
|
* machine/sun/sun-bwtwo.c (_tme_sunbw2_connections_new): Fill in the
|
|
new parts of the struct tme_fb_connection.
|
|
(tme_sun_bwtwo): Fixed a bug in the argument processing.
|
|
|
|
* machine/sun/sun-cgtwo.c: Added.
|
|
|
|
* machine/sun2/SUN2-MULTIBUS: Since the Emulex emulation changed
|
|
slightly, make sure that NetBSD will still probe this as an Emulex.
|
|
|
|
* machine/sun3/SUN3-CARRERA: Added support for the cgthree board.
|
|
|
|
* machine/sun3/sun3-mainbus.c (tme_machine_sun3,cgtwo): Added.
|
|
|
|
* machine/sun3/sun3-mmu.c (_tme_sun3_tlb_fill_mmu): Temporarily work
|
|
around a bug in NetBSD/sun3 where the cgtwo is mapped at the wrong
|
|
physical address.
|
|
|
|
* tme/generic/bus.h: Added a prototype for tme_bus_cycle_xfer_reg().
|
|
|
|
* tme/generic/fb.h: Added macros for the different image classes,
|
|
mapping types, and default subfield masks. Also added macros for the
|
|
"any" subfield mask, and for the mask of the maximum index value.
|
|
Expanded struct tme_fb_connection and struct tme_fb_xlat to include
|
|
image class, subfield masks, and mapping information. Added
|
|
prototypes for tme_fb_xlat_colors_get() and tme_fb_xlat_colors_set().
|
|
|
|
* tme/machine/sun.h: Added a prototype for tme_sun_cgtwo().
|
|
|
|
Wed Mar 23 12:42:56 2005 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/ieee754/ieee754-ops-auto.sh: Now emit ops for log, log10, and
|
|
exp.
|
|
|
|
* ic/m68k/m68010.c: TME_ELEMENT_X_NEW_DECL(tme_ic_,m68k,m68010): Now
|
|
call tme_m68k_opcodes_init_m68010() to initialize the opcode table.
|
|
|
|
* ic/m68k/m68020.c: TME_ELEMENT_X_NEW_DECL(tme_ic_,m68k,m68020): Now
|
|
call tme_m68k_opcodes_init_m68020() to initialize the opcode table.
|
|
|
|
* ic/m68k/m6888x.c (tme_m68k_fbcc): Fixed a bug in calculating the
|
|
target PC; the displacement is always added to the original PC plus
|
|
two. Now always take a 32-bit displacement as a proper operand.
|
|
|
|
* ic/m68k/m68k-execute.c: Simplified how instructions are decoded and
|
|
executed. Now, the first 16-bit instruction word is used to directly
|
|
index an array of 32-bit integers, each of which gives the
|
|
instruction's function number, the function's arguments, immediate
|
|
fetching and EA calculation information, and a single
|
|
special-operation escape bit. Only two types of immediate fetches are
|
|
supported: a 16-bit fetch, sign-extended to 32 bits, and a 32-bit
|
|
fetch. All of this speeds things up dramatically.
|
|
[_TME_M68K_STATS]: Keep statistics on executed instructions.
|
|
|
|
* ic/m68k/m68k-impl.h: Removed TME_M68K_SIZE_SUBMAP_X,
|
|
TME_M68K_SIZE_16U8, TME_M68K_SIZE_16S32, TME_M68K_OPNUM_SUBMAP_X,
|
|
TME_M68K_OPNUM_UNDEF, and the list of special opcodes, all of which
|
|
were used only in the old opcode maps.
|
|
Added macros for the decoded instruction parameters in the new opcode
|
|
maps.
|
|
Removed the data structures used by the old opcode maps. The EA
|
|
register is now a proper IC register. Added statistics to struct
|
|
tme_m68k. Removed the declarations of the small immediate arrays.
|
|
The small immediates are now proper IC registers. Added declarations
|
|
of the different CPUs' opcode maps and their initialization functions,
|
|
and the instruction function array. Added declarations for
|
|
tme_m68k_bccl(), tme_m68k_bsrl(), tme_m68k_divl() and tme_m68k_mull().
|
|
|
|
* ic/m68k/m68k-insns.c (tme_m68k_bccl):
|
|
(tme_m68k_bsrl):
|
|
(tme_m68k_link):
|
|
(tme_m68k_rtd): Now that the opcode map supports 16-bit immediates
|
|
sign-extended to 32 bits, always take a proper 32-bit operand.
|
|
|
|
* ic/m68k/m68k-iset.txt: Now that the opcode map supports 16-bit
|
|
immediates sign-extended to 32 bits again, make rtd and the 16-bit
|
|
versions of link, bsr, bcc, and fbcc take this kind of immediate.
|
|
|
|
* ic/m68k/m68k-misc.c (tme_m68k_exception): Now log a message when a
|
|
double fault causes a processor halt.
|
|
|
|
* ic/m68k/m68k-opmap-make.pl: The initial rewrite of the opcode map
|
|
generation resulted in an enormous opcode map source file, and,
|
|
because the instruction function pointers were in the map entries
|
|
directly, an opcode map array that wasn't 64-bit friendly.
|
|
Now, the instruction function pointers are in a small separate array
|
|
which is indexed by eight bits in the 32-bit opcode parameter
|
|
information, which is all that remains in the opcode map. To make
|
|
room for these eight bits, the first EA mode and reg fields are not
|
|
stored (and are instead are swapped in by the instruction executer
|
|
after the instruction function has been fetched), and the special
|
|
operation field has been reduced to a single bit. To shrink the
|
|
opcode map sources, we take advantage of the fact that each of the
|
|
1024 aligned sets of 64 opcodes (a "root") uses one of a small number
|
|
of patterns to initialize itself (for m68000 through m68020, there are
|
|
only 37 such patterns), and we generate a function to initialize the
|
|
parameters in that pattern. Also, each CPU uses the previous CPU's
|
|
opcode initialization function to initialize the bulk of its opcode
|
|
map, making changes only as needed.
|
|
All of this has reduced the size of the opcode map source file
|
|
dramatically.
|
|
Also, support for 16-bit immediates, sign-extended to 32 bits, has
|
|
been added again.
|
|
|
|
Tue Mar 15 02:56:58 2005 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/m68k/m6888x.c (tme_m68k_fbcc): All 16-bit immediates are now
|
|
sign-extended to 32-bits in a fixed immediate register.
|
|
|
|
* ic/m68k/m68k-insns.c (_tme_m68k_bcc):
|
|
(tme_m68k_bccl):
|
|
(_tme_m68k_bsr):
|
|
(tme_m68k_bsrl): Added.
|
|
(tme_m68k_bcc): Now just use _tme_m68k_bcc.
|
|
(tme_m68k_bsr): Now just use _tme_m68k_bsr.
|
|
(tme_m68k_link): Now handle the 16-bit variant explicitly.
|
|
(tme_m68k_rtd): Now handle our 16-bit argument correctly.
|
|
(tme_m68k_mull):
|
|
(tme_m68k_divl): Added.
|
|
|
|
Thu Mar 10 13:29:42 2005 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/m68k/m68010.c: Now define _TME_M68K_EXECUTE_OPMAP to
|
|
tme_m68k_opcodes_m68010 when compiling the executors.
|
|
TME_ELEMENT_X_NEW_DECL(tme_ic_,m68k,m68010): No longer call
|
|
_tme_m68010_decoder_map_init().
|
|
|
|
* ic/m68k/m68020.c: Now define _TME_M68K_EXECUTE_OPMAP to
|
|
tme_m68k_opcodes_m68020 when compiling the executors.
|
|
TME_ELEMENT_X_NEW_DECL(tme_ic_,m68k,m68020): No longer call
|
|
_tme_m68020_decoder_map_init().
|
|
|
|
* ic/m68k/m68k-insns-auto.sh: cas2 now gets its specop2 as a 16-bit
|
|
operand. moves now must do its own memory cycles, and EA
|
|
postincrement and predecrement.
|
|
Now track memory statistics in the memory functions.
|
|
|
|
* ic/m68k/m68k-iset.txt: Many simplifications, and some expansions, to
|
|
enable faster instruction dispatching. Eliminated all specops except
|
|
for specop16 and fpgen, eliminated the #16S32 immediate type (all
|
|
16-bit immediates are now sign-expanded to 32 bits), and bcc and bsr
|
|
are now expanded (multiple iset lines may expand to the same pattern,
|
|
with the first one winning, but also with a system of * understood by
|
|
m68k-opmap-make.pl to count the correct number of duplicates).
|
|
|
|
* ic/m68k/m68k-misc-auto.sh: Now define a 96-bit register for
|
|
immediates. Now define registers for the constants zero through
|
|
eight.
|
|
|
|
* ic/m68k/m68k-misc.c: Removed the small immediates arrays.
|
|
(_tme_m68k_connection_break): Now return zero, to silence a warning
|
|
(?).
|
|
(tme_m68k_new): Increased the instruction burst size to 200. This
|
|
dramatically improves performance. Now initialize the small
|
|
immediates.
|
|
(tme_m68k_redispatch): Count redispatch statistics.
|
|
(tme_m68k_tlb_fill): Count TLB fill statistics.
|
|
(tme_m68k_dump): No longer display the specop2 value.
|
|
|
|
* ic/m68k/m68k-opmap-make.pl (operand_final): Removed.
|
|
|
|
* ic/m68k/m68k-opmap-make.pl: Rewritten to support much faster
|
|
dispatching of instructions. Now each CPU gets an independent
|
|
64K-entry array, indexed by first instruction word, that yields a
|
|
function pointer and 32 bits of parameter information. This
|
|
information includes struct tme_m68k-relative offsets for the
|
|
function's operands, EA and immediate fetching information, and specop
|
|
information.
|
|
|
|
Fri Feb 18 04:12:55 2005 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* bus/multibus/sun-mie.c (_tme_sun_mie_tlb_set_allocate): Atomic
|
|
variable changes.
|
|
(_tme_sun_mie_tlb_fill): Don't invalidate a TLB entry if it happens to
|
|
be the same as the one we're filling.
|
|
|
|
* bus/multibus/sun-sc.c (_tme_sun_sc_bus_cycle_dma): Fixed a bug where
|
|
we would do 16-bit accesses in 8-bit mode.
|
|
(_tme_sun_sc_intack): Added.
|
|
(_tme_sun_sc_cycle_new):
|
|
(_tme_sun_sc_callout):
|
|
(_tme_sun_sc_bus_cycle_data_reg):
|
|
(_tme_sun_sc_bus_cycle_icr):
|
|
(_tme_sun_sc_scsi_cycle): Mostly mechanical changes to support the new
|
|
events/actions SCSI bus interface.
|
|
(_tme_sun_sc_connection_make_scsi): No longer get any predefined SCSI
|
|
sequences.
|
|
(_tme_sun_sc_connections_new): No longer provide a predefined SCSI
|
|
sequence function.
|
|
(tme_bus_multibus,sun_sc): Added support for the "vme" argument.
|
|
|
|
* generic/fb-xlat-auto.sh: Fixed a serious bug where we would decide
|
|
that FIFOs are always aligned, even when the FIFO's bits per pixel
|
|
value isn't known at compile time.
|
|
Fixed a bug where xlat_run would get decremented during every loop
|
|
iteration, instead of only after every translated source 32-bit word.
|
|
When the loop isn't unrolled for source pixels, this causes xlat_run
|
|
to go negative too early, which can stop translation.
|
|
|
|
* generic/scsi.c (tme_scsi_connection_score): No longer score based on
|
|
a predefined SCSI sequence function.
|
|
|
|
* ic/m68k/Makefile.am: Now build the m6888x support, which depends on
|
|
the ieee754 support.
|
|
|
|
* ic/m68k/m68k-impl.h:
|
|
* tme/ic/m68k.h: Added m6888x support.
|
|
|
|
* ic/m68k/m68k-iset.txt: Added the floating-point instructions.
|
|
|
|
* ic/m68k/m68k-misc.c (_tme_m6888x_enable): Added.
|
|
(_tme_m68k_connection_score): A bus must not provide an m6888x enable
|
|
function.
|
|
(_tme_m68k_connections_new): A m68k provides an m6888x enable
|
|
function.
|
|
(tme_m68k_new): Now pass FPU arguments to tme_m68k_fpu_new(), and
|
|
display the FPU usage with tme_m68k_fpu_usage().
|
|
(tme_m68k_do_reset): Reset any FPU.
|
|
|
|
* machine/sun2/SUN2-MULTIBUS: Make the bpf attachment for ie0 delay
|
|
packets slightly. This works around a sleep/wakeup race condition in
|
|
the NetBSD kernel RARP code.
|
|
Changed the type of the bwtwo from obmem to multibus, since the bwtwo
|
|
implementation is now common to all sun machines.
|
|
|
|
* machine/sun3/SUN3-CARRERA: Now define an unknown-compliance m68881.
|
|
Now use the revision 3.0 ROM.
|
|
Increased the size of the VME bus to the full 4GB. Commented out the
|
|
sc0 attachment, in favor of the new si0 attachment.
|
|
To support stock NetBSD 1.6*, make the Emulex tape respond to INQUIRY
|
|
commands in a normal way.
|
|
|
|
* machine/sun3/sun3-control.c (_tme_sun3_control_cycle_handler): Call
|
|
out changes to the FPU and DVMA enable bits. Silently ignore an
|
|
attempt to enable the Sun FPA.
|
|
|
|
* machine/sun3/sun3-impl.h: Now track the active DVMA TLBs, so that
|
|
they can be invalidated when DVMA is enabled or disabled. Atomic
|
|
variable fixes, and a prototype for _tme_sun3_mmu_sdvma_change().
|
|
|
|
* machine/sun3/sun3-mmu.c (_tme_sun3_cycle_dummy):
|
|
(_tme_sun3_sdvma_disabled):
|
|
(_tme_sun3_mmu_sdvma_change): Added.
|
|
(_tme_sun3_bus_tlb_fill): Now track TLB entries filled for DVMA space.
|
|
Entries that are filled while DVMA is disabled generate a VME bus
|
|
fault. For now, bus cycles to unmapped DVMA addresses are ignored.
|
|
(_tme_sun3_tlb_fill_mmu): Apparently the magic obio mapping of the
|
|
PROM works over a PROM-sized region starting at 0x100000. Made some
|
|
changes to silence -Wuninitialized.
|
|
(_tme_sun3_mmu_tlb_set_allocate): Atomic variable changes.
|
|
|
|
* scsi/scsi-bus.c: Replaced the idea of a SCSI sequence with the much
|
|
simpler idea of a bus agent waiting for one or more SCSI events to
|
|
happen, then taking one or more SCSI actions.
|
|
(_tme_scsi_bus_callout): Now call out the events triggered and actions
|
|
taken to the connection.
|
|
(_tme_scsi_bus_cycle): Now take the events to wait on and the actions
|
|
to take from the connection. A connection waits until one of its
|
|
events triggers, then some part of its actions are taken. There is
|
|
now support for half and full SCSI bus arbitration, and reselection.
|
|
(_tme_scsi_bus_sequence_get): Removed.
|
|
(_tme_scsi_bus_connection_score):
|
|
(_tme_scsi_bus_connections_new): We can't provide a predefined
|
|
sequence function any more, or score a connection based on one.
|
|
|
|
* scsi/scsi-device.c (_tme_scsi_device_callout):
|
|
(_tme_scsi_device_cycle): More or less mechanical changes to support
|
|
the new events/actions SCSI bus interface. Fixed a bug where we would
|
|
go past the end of the message dispatch array for IDENTIFY messages.
|
|
(tme_scsi_device_connections_new): Removed the predefined SCSI
|
|
sequence member assignment.
|
|
|
|
* scsi/scsi-tape.c (tme_scsi_tape_cdb_inquiry): It looks like
|
|
nonexistent LUNs are reported as "unsupported", and not "not present".
|
|
Now identify as a SCSI-1 device, and be sure not to return more data
|
|
than the initiator requested.
|
|
|
|
* tme/common.h: Now declare _tme_volatile.
|
|
Added some missing parentheses to _TME_FIELD_DEPOSIT(). Fixed a bug
|
|
in the definition of the tme_value64_uint32s[] member of union
|
|
tme_value64.
|
|
Added definitions for tme_value64_imul() and tme_value64_idiv().
|
|
|
|
* tme/generic/Makefile.am: Now install float.h.
|
|
|
|
* tme/generic/bus.h: Now define TME_BUS_SIGNAL_DRQ and
|
|
TME_BUS_SIGNAL_DACK.
|
|
|
|
* tme/generic/scsi.h: Now define TME_SCSI_ID_SELECTED() and
|
|
TME_SCSI_ID_RESELECTED(), to determine if an ID is being selected or
|
|
reselected. Replaced the idea of a SCSI sequence with the much
|
|
simpler idea of a bus agent waiting for one or more SCSI events to
|
|
happen, then taking one or more SCSI actions.
|
|
|
|
* tme/ic/Makefile.am: Now install i825x6.h and ieee754.h.
|
|
|
|
* tme/machine/sun.h: Added a prototype for tme_sun_si().
|
|
|
|
* tme/scsi/scsi-device.h: Removed the old predefined SCSI sequences
|
|
from struct scsi_device.
|
|
|
|
* tme/scsi/scsi-msg.h: Now define TME_SCSI_MSG_IDENTIFY_LUN_MASK, for
|
|
getting the LUN out of an IDENTIFY message.
|
|
|
|
* tmesh/tmesh-input.y: Now define YYMAXDEPTH, to silence -Wundef.
|
|
|
|
Thu Feb 17 13:42:44 2005 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* Makefile.am: Added tools/ to SUBDIRS, and dist/ to EXTRA_DIST.
|
|
Added a dist-hook target to clean the CVS directories out of dist/.
|
|
|
|
* acinclude.m4 (AC_CHECK_FLOAT_FORMAT):
|
|
(AC_CHECK_FLOAT_LIMITS): Added.
|
|
|
|
* configure.in: Bumped version to 0.4.
|
|
Now check for limits.h and float.h. Check for volatile, float,
|
|
double, and long double, and the signal handler type.
|
|
Added ieee754 and ncr5380 to the list of sun3 ICs. When using gcc,
|
|
now use -Wundef when compiling with warnings, and set the no strict
|
|
aliasing flag. Add the floating point format configuration to
|
|
tmeconfig.h.
|
|
|
|
* generic/Makefile.am: Now build float.c and float-auto.c, and include
|
|
float-auto.sh and float-auto.c in the distribution.
|
|
|
|
* generic/bus-el.c generic/bus.c machine/sun/sun-mmu.c
|
|
machine/sun/sun-obie.c machine/sun2/sun2-impl.h
|
|
machine/sun2/sun2-mmu.c tme/atomics.h tme/generic/bus.h
|
|
tme/machine/sun.h:
|
|
|
|
Cleaned up atomic variables. Now atomic variables declared with
|
|
TME_ATOMIC and TME_ATOMIC_POINTER_TYPE are volatile. To do this
|
|
right, TME_ATOMIC_POINTER_TYPE changed to take just the base type
|
|
pointed to, so there has been some fallout.
|
|
|
|
* generic/float-auto.sh generic/float.c ic/ncr5380.c
|
|
ic/ieee754/Makefile.am ic/ieee754/ieee754-misc-auto.sh
|
|
ic/ieee754/ieee754-misc.c ic/ieee754/ieee754-ops-auto.sh
|
|
ic/ieee754/ieee754-precision.sh ic/ieee754/softfloat-tme.c
|
|
ic/ieee754/softfloat-tme.h ic/m68k/m6888x-auto.sh ic/m68k/m6888x.c
|
|
machine/sun/sun-si.c tme/generic/float.h tme/ic/ieee754.h
|
|
tools/Makefile.am:
|
|
|
|
Added.
|
|
|
|
* host/posix/posix-disk.c (tme_host_posix,disk): Only probe for the
|
|
block size if the device is a character device. If we have mmap
|
|
support, the block size for all devices must be some multiple of the
|
|
page size - this fixes a bug where we would try to mmap()
|
|
non-page-sized regions at non-page boundaries.
|
|
|
|
* ic/Makefile.am: Added ieee754 to the list of distribution
|
|
subdirectories. Now build ncr5380.c.
|
|
Added i825x6reg.h to the list of i825x6 sources.
|
|
|
|
* ic/m68k/m68020.c (_tme_m68020_exception):
|
|
(_tme_m68020_rte): Fixed bugs in the handling of bus fault frames for
|
|
instruction fetches. Previously, we would always fault on stage B,
|
|
and only on stage C for a 32-bit fetch. This was supposed to be the
|
|
other way around. Also, an address error doesn't set a fault bit,
|
|
only a rerun bit.
|
|
|
|
* ic/m68k/m68k-execute.c (_TME_M68K_EXECUTE_NAME): Fixed some bugs
|
|
caught by gcc -Wuninitialized.
|
|
|
|
* ic/m68k/m68k-opmap-make.pl: Fixed a bug where the illegal opcode
|
|
wouldn't get the 'illegal' specop.
|
|
|
|
* libtme/threads-sjlj.c [HAVE_GTK]: Define G_ENABLE_DEBUG if it isn't
|
|
defined, to silence -Wundef.
|
|
|
|
* machine/sun/sun-mmu.c (tme_sun_mmu_tlb_fill): Fixed a serious bug
|
|
where any page marked as modified was given out as writable, even if
|
|
it wasn't marked as writable. SunOS likes to set page table entries
|
|
that are modified, but not writable, and this bug was preventing
|
|
proper copy-on-write behavior.
|
|
|
|
* machine/sun2/Makefile.am: No longer build sun2-bwtwo.c.
|
|
|
|
* machine/sun2/sun2-bwtwo.c: Removed.
|
|
|
|
* machine/sun2/sun2-mainbus.c (_tme_sun2_connections_new): Fixed bugs
|
|
in forming the list of free buses.
|
|
(tme_machine_sun2,zs): Now use the standard Sun z8530 socket
|
|
definition.
|
|
(tme_machine_sun2,bwtwo): Added.
|
|
|
|
* machine/sun3/sun3-mainbus.c (_tme_sun3_bus_signal): Apparently,
|
|
SunOS likes to set both the level 5 and level 7 clock interrupt enable
|
|
bits. The level 5 bit seems to take precedence.
|
|
(_tme_sun3_connection_score): Insist on a m68020 or better.
|
|
(tme_machine_sun3,si): Added.
|
|
|
|
* scsi/emulexmt02.c (_tme_emulexmt02_cdb_request_sense): Fixed a bug
|
|
where we weren't putting the Emulex error code in the sense.
|
|
(_tme_emulexmt02_cdb_inquiry): Added a hack to make this tape usable
|
|
to install SunOS 4.1.1.
|
|
(tme_scsi_tape_emulexmt02_init): If the user specified a vendor of
|
|
EMULEX, use the normal INQUIRY CDB handling, instead of returning the
|
|
useless Emulex INQUIRY data. Now return an illegal command for a
|
|
RESERVE CDB.
|
|
|
|
Thu Feb 17 02:14:57 2005 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/m68k/m68k-insns.c (tme_m68k_bfffo): Fixed a bug where we were
|
|
using ffs(), which finds the least significant bit set, and not the
|
|
most significant bit set. Now find the most significant bit set.
|
|
|
|
* ic/m68k/m68k-verify.c (_tme_m68k_verify_end): Added better support
|
|
for verifying bitfield instructions. Don't try to verify
|
|
floating-point instructions.
|
|
(tme_m68k_verify_end_branch): Now leave the m68k structure unchanged.
|
|
|
|
* machine/sun/Makefile.am: Added sun-fb.h and sun-si.c to the sources
|
|
list. Added tme-sun-eeprom.pl to the distribution.
|
|
|
|
Wed Jan 26 13:13:29 2005 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* host/gtk/gtk-display.h: If G_ENABLE_DEBUG isn't defined, define it
|
|
to zero. Some GTK installations apparently require this.
|
|
|
|
* host/gtk/gtk-screen.c (_tme_gtk_screen_mode_change): Allocate a
|
|
GdkImage with the extra scanlines needed to hold the overtranslation
|
|
that the automatically generated functions do.
|
|
|
|
* ic/isil7170.c: Include <time.h> and not <sys/types.h> to get struct
|
|
tm.
|
|
|
|
* ic/m68k/m68020.c (_tme_m68020_exception): Store the memory Z buffer.
|
|
(_tme_m68020_rte): Restore the memory Z buffer.
|
|
|
|
* libtme/module.c (tme_module_open): Fixed a bug where were freeing
|
|
the tokens array twice.
|
|
|
|
* scsi/scsi-msg.c (tme_scsi_device_msg_identify): Now set the
|
|
addressed LUN.
|
|
|
|
Sun Jan 16 01:24:37 2005 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/m68k/m68k-execute.c (_TME_M68K_EXECUTE_NAME): Added support for
|
|
executing floating-point general instructions.
|
|
|
|
Fri Jan 14 12:27:41 2005 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* dist/softfloat/processors/386-GCC.h
|
|
dist/softfloat/processors/SPARC-GCC.h
|
|
dist/softfloat/softfloat/README.txt
|
|
dist/softfloat/softfloat/SoftFloat-history.txt
|
|
dist/softfloat/softfloat/SoftFloat-source.txt
|
|
dist/softfloat/softfloat/SoftFloat.txt
|
|
dist/softfloat/softfloat/timesoftfloat.txt
|
|
dist/softfloat/softfloat/bits32/softfloat-macros
|
|
dist/softfloat/softfloat/bits32/softfloat.c
|
|
dist/softfloat/softfloat/bits32/timesoftfloat.c
|
|
dist/softfloat/softfloat/bits32/386-Win32-GCC/Makefile
|
|
dist/softfloat/softfloat/bits32/386-Win32-GCC/milieu.h
|
|
dist/softfloat/softfloat/bits32/386-Win32-GCC/softfloat-specialize
|
|
dist/softfloat/softfloat/bits32/386-Win32-GCC/softfloat.h
|
|
dist/softfloat/softfloat/bits32/SPARC-Solaris-GCC/Makefile
|
|
dist/softfloat/softfloat/bits32/SPARC-Solaris-GCC/milieu.h
|
|
dist/softfloat/softfloat/bits32/SPARC-Solaris-GCC/softfloat-specialize
|
|
dist/softfloat/softfloat/bits32/SPARC-Solaris-GCC/softfloat.h
|
|
dist/softfloat/softfloat/bits32/templates/Makefile
|
|
dist/softfloat/softfloat/bits32/templates/milieu.h
|
|
dist/softfloat/softfloat/bits32/templates/softfloat-specialize
|
|
dist/softfloat/softfloat/bits32/templates/softfloat.h
|
|
dist/softfloat/softfloat/bits64/softfloat-macros
|
|
dist/softfloat/softfloat/bits64/softfloat.c
|
|
dist/softfloat/softfloat/bits64/timesoftfloat.c
|
|
dist/softfloat/softfloat/bits64/386-Win32-GCC/Makefile
|
|
dist/softfloat/softfloat/bits64/386-Win32-GCC/milieu.h
|
|
dist/softfloat/softfloat/bits64/386-Win32-GCC/softfloat-specialize
|
|
dist/softfloat/softfloat/bits64/386-Win32-GCC/softfloat.h
|
|
dist/softfloat/softfloat/bits64/SPARC-Solaris-GCC/Makefile
|
|
dist/softfloat/softfloat/bits64/SPARC-Solaris-GCC/milieu.h
|
|
dist/softfloat/softfloat/bits64/SPARC-Solaris-GCC/softfloat-specialize
|
|
dist/softfloat/softfloat/bits64/SPARC-Solaris-GCC/softfloat.h
|
|
dist/softfloat/softfloat/bits64/templates/Makefile
|
|
dist/softfloat/softfloat/bits64/templates/milieu.h
|
|
dist/softfloat/softfloat/bits64/templates/softfloat-specialize
|
|
dist/softfloat/softfloat/bits64/templates/softfloat.h:
|
|
|
|
Import of SoftFloat Release 2b.
|
|
|
|
* dist/softfloat/softfloat/bits32/softfloat.c:
|
|
* dist/softfloat/softfloat/bits64/softfloat.c: Added the tme/softfloat
|
|
glue and removed some unused variables.
|
|
|
|
Fri Jan 14 11:44:18 2005 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* machine/sun/tme-sun-eeprom.pl: Make selftest-#megs default to zero.
|
|
* tools/tme-binary-struct.pl.in: When standard input is a terminal, we
|
|
don't read any input.
|
|
|
|
Thu Aug 19 12:27:24 2004 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* TODO: Updated.
|
|
|
|
* acinclude.m4 (AC_CHECK_SHIFTSIGNED): Added.
|
|
|
|
* configure.in: Use AC_CHECK_SHIFTSIGNED() to see if right shifts of
|
|
signed integrals preserve sign.
|
|
Added support for sun3 systems.
|
|
|
|
* generic/bus-el.c (_tme_bus_intack): If a device doesn't acknowledge
|
|
interrupts, return any user-specified vector on the bus connection
|
|
before falling back to the undefined vector.
|
|
(_tme_bus_connections_new): Now allow the user to specify a vector on
|
|
the bus connection.
|
|
(tme_generic,bus): Added a hack that allows the user to specify a 4GB
|
|
bus on a 32-bit system.
|
|
|
|
* ic/Makefile.am: Now build tme_ic_isil7170.la.
|
|
|
|
* ic/i825x6.c (_tme_i825x6_callout_cu): Added a missing break
|
|
statement to a switch arm.
|
|
|
|
* ic/isil7170.c ic/m68k/m68020.c machine/sun/sun-bwtwo.c
|
|
machine/sun/sun-fb.c machine/sun/sun-fb.h machine/sun/sun-obie.c
|
|
machine/sun/tme-sun-eeprom.pl machine/sun3/Makefile.am
|
|
machine/sun3/SUN3-CARRERA machine/sun3/sun3-control.c
|
|
machine/sun3/sun3-impl.h machine/sun3/sun3-mainbus.c
|
|
machine/sun3/sun3-mmu.c tme/ic/isil7170.h
|
|
tools/tme-binary-struct.pl.in:
|
|
|
|
Added.
|
|
|
|
* ic/m68k/Makefile.am: Removed an inadvertent m68k-verify.c from
|
|
tme_ic_m68k_la_SOURCES.
|
|
|
|
* ic/m68k/Makefile.am: Now compile m68020.c.
|
|
|
|
* ic/m68k/m68k-misc.c (tme_m68000_exception_process):
|
|
(tme_m68020_exception_process): For illegal instruction exceptions,
|
|
now use the line A or line F vector as appropriate.
|
|
(tme_m68k_rte_start): Added some TME_M68K_SEQUENCE_RESTARTING
|
|
protection.
|
|
|
|
* libtme/threads-sjlj.c: Removed the unused
|
|
tme_sjlj_thread_cond_notified field from the thread structure.
|
|
(tme_sjlj_thread_create): Initialize the thread's linkage in the
|
|
timeout list.
|
|
|
|
* machine/Makefile.am: Added the sun3 directory to DIST_SUBDIRS.
|
|
|
|
* machine/sun/Makefile.am: Now build sun-bwtwo.c, sun-fb.c, and
|
|
sun-obie.c for libtme_machine_sun.la.
|
|
Now make the tme-sun-eeprom script.
|
|
|
|
* machine/sun/sun-keyboards.txt: Added a map for the type 3 keyboard.
|
|
|
|
* machine/sun/sun-mmu.c (tme_sun_mmu_tlb_fill): Don't invalidate the
|
|
old TLB entry if it happens to be the same one we're filling.
|
|
|
|
* tme/common.h: Now define TME_FIELD_MASK_EXTRACTU and the internal
|
|
_TME_FIELD_MASK_FACTOR, for extracting field values using a mask.
|
|
|
|
* tme/generic/bus.h: Now define TME_BUS_CYCLE_SYNCHRONOUS_EVENT. Now
|
|
track a single interrupt vector for a connection, for those
|
|
connections that only use a single, nonprogrammable vector.
|
|
|
|
* tme/ic/Makefile.am: Now install isil7170.h.
|
|
|
|
* tme/machine/sun.h: To allow for more code sharing, now define
|
|
TME_SUN_Z8530_SIZE and TME_SUN_Z8530_SOCKET_INIT. Added prototypes
|
|
for tme_sun_obie() and tme_sun_bwtwo().
|
|
|
|
Wed Aug 11 12:30:28 2004 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/m68k/m68010.c: Removed GROUPn_ from the TME_M68K_EXCEPTION_ macro
|
|
names, since those group numbers applied to only the 68000 and 68010.
|
|
Also added the new TME_M68K_VECTOR_ macros.
|
|
|
|
* ic/m68k/m68k-execute.c (_TME_M68K_EXECUTE_NAME): Fixed problems with
|
|
the way that tracing is handled, to enable support for 68020 tracing
|
|
and its new trace exception frame format. Fixed a bug in the code
|
|
that detects a 32-bit branch. Fixed a bug in decoding the divul and
|
|
mulul extension words. Added missing declarations for some variables
|
|
used in 68020 effective address calculation.
|
|
|
|
* ic/m68k/m68k-impl.h: Replaced TME_M68K_FLAG_T with TME_M68K_FLAG_T0
|
|
and TME_M68K_FLAG_T1, and use them wherever possible. Removed the
|
|
GROUPn_ from the TME_M68K_EXCEPTION_ macros, since the original group
|
|
numbers were specific to the 68000 and 68010. Added more exception
|
|
frame format identifier macros. Added new macros for the exception
|
|
vectors.
|
|
(TME_M68K_INSN_BRANCH):
|
|
(TME_M68K_INSN_CHANGE_SR): Improved tracing support.
|
|
|
|
* ic/m68k/m68k-insns-auto.sh: The old asr expansion (which was the
|
|
same as the lsr expansion, but with a signed operand and result) had
|
|
bugs and also required that right shifts of a signed operand be
|
|
arithmetic. Added a new expansion that fixes these problems.
|
|
Removed the _GROUPn from the TME_M68K_EXCEPTION_ macro names, since
|
|
the group numbers were specific to the 68000 and 68010. Also added
|
|
the new TME_M68K_VECTOR_ macros.
|
|
In the bus-cycle functions, recognize the
|
|
TME_BUS_CYCLE_SYNCHRONOUS_EVENT pseudo-error, and make it force the
|
|
executer to check external events before executing the next
|
|
instruction.
|
|
|
|
* ic/m68k/m68k-insns.c: Removed the _GROUPn from the
|
|
TME_M68K_EXCEPTION_ macro names, since the group numbers were specific
|
|
to the 68000 and 68010. Also added the new TME_M68K_VECTOR_ macros.
|
|
Where applicable, store the current PC as the last PC before setting
|
|
the next PC as the current PC. This supports format 2 exception
|
|
frames, which stack the address of the instruction that caused the
|
|
exception.
|
|
(tme_m68k_movec): Added support for the 68020 control registers.
|
|
|
|
* ic/m68k/m68k-misc-auto.sh: Create registers for the next program
|
|
counter, the 68020 cacr and caar, and the always-zero register.
|
|
|
|
* ic/m68k/m68k-misc.c: Removed the _GROUPn from the
|
|
TME_M68K_EXCEPTION_ macro names, since the group numbers were specific
|
|
to the 68000 and 68010. Also added the new TME_M68K_VECTOR_ macros.
|
|
(_tme_m68k_bus_interrupt):
|
|
(tme_m68k_external_check): Implement a system that prevents NMI from
|
|
being repeatedly accepted. If the interrupt priority mask is already
|
|
seven, only accept an NMI on a transition from deasserted to asserted.
|
|
(tme_m68k_new): Now set the mask of T bits used by the processor.
|
|
(tme_m68k_do_reset): Now clear the E and F bits in the 68020 cacr.
|
|
Fixed a bug where we loaded the initial SSP and PC from supervisor
|
|
data space instead of the correct supervisor program space.
|
|
(tme_m68k_change_sr): Only recognize the M bit on a 68020 or greater,
|
|
and fixed bugs in the selection of the correct stack pointer control
|
|
register.
|
|
(tme_m68k_exception_process): Renamed to tme_m68000_exception_process,
|
|
since the grouping and priority it implements are specific to the
|
|
68000 and 68010.
|
|
(tme_m68020_exception_process): Added.
|
|
(tme_m68k_bitfield_offset): Simplified the bitfield byte offset
|
|
calculation for negative bit offsets.
|
|
(tme_m68k_bitfield_width): Don't bother masking a bitfield width that
|
|
was encoded in the instruction; it can't be greater than 31.
|
|
(_tme_m68k_bitfield_read): If the bitfield is in memory, note that the
|
|
current instruction can fault. Fixed bugs where we assumed that
|
|
TME_BIT(32) is zero mod 2^32, when it may be 1 because of shift
|
|
limiting, which would cause us to fail to mask and/or sign-extend a
|
|
32-bit bitfield value correctly.
|
|
(tme_m68k_bitfield_write_unsigned): Fixed a bug where we wouldn't mask
|
|
the value we were given before setting the flags. Fixed bugs where we
|
|
assumed that TME_BIT(32) is zero mod 2^32, when it may be 1 because of
|
|
shift limiting. If the bitfield is in memory, note that the current
|
|
instruction can fault.
|
|
|
|
* ic/m68k/m68k-verify.c (tme_m68k_verify_mem_any): Fixed a bug where
|
|
we wouldn't properly verify transfers of endianless data.
|
|
(tme_m68k_verify_init): Now set up a full 32-bit address space.
|
|
(_tme_m68k_verify_end): Store %a7 back in its proper stack pointer
|
|
control register, so we can verify changes to the control registers.
|
|
Ignore extra verifier memory reads on bitfield instructions; the
|
|
verifier bitfield implementation often reads addresses not covered by
|
|
the bitfield.
|
|
|
|
Mon May 17 11:57:01 2004 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* host/bsd/bsd-bpf.c: Added support for the "delay" option, which
|
|
delays all incoming packets for a user-specified number of
|
|
microseconds.
|
|
(_tme_bsd_bpf_read): Fixed a bug where a TME_ETHERNET_READ_PEEK read
|
|
would discard the read packet.
|
|
|
|
Fri May 14 00:56:19 2004 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* host/bsd/bsd-bpf.c: Removed the unused tme_bsd_bpf_cond_writer
|
|
structure member.
|
|
(tme_host_bsd,bpf): Fixed a bug where we weren't initializing the
|
|
tme_bsd_bpf_conf_reader condition.
|
|
|
|
Tue May 11 12:03:36 2004 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/i825x6.c: Added some logging.
|
|
(_tme_i825x6_callout_ru): Don't set the B bit in RFD status fields.
|
|
|
|
* libtme/misc.c (_tme_misc_number_parse): Some changes to silence gcc
|
|
-Wuninitialized.
|
|
|
|
Tue May 04 01:17:27 2004 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* bus/multibus/sun-mie.c:
|
|
* ic/i825x6.c:
|
|
* ic/i825x6reg.h:
|
|
* tme/ic/i825x6.h: Added.
|
|
|
|
* machine/sun2/SUN2-MULTIBUS: Added commands to create ie0.
|
|
|
|
Fri Apr 30 12:11:36 2004 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* bus/multibus/3c400.c bus/multibus/sun-sc.c generic/bus-el.c
|
|
ic/am9513.c ic/z8530.c ic/m68k/m68k-insns.c ic/m68k/m68k-misc.c
|
|
machine/sun2/sun2-mainbus.c tme/generic/bus.h:
|
|
|
|
Reworked bus signals in several ways: Added the notion of the bus
|
|
signals set. Every bus should support multiple device-specific bus
|
|
signals sets, added by elements connecting to the bus. This enables
|
|
elements to pass these device-specific bus signals to each other.
|
|
Now bus signals are only specified as either asserted or negated,
|
|
and devices almost never signal edges. For devices that only drive
|
|
signals either high or low, you can exclusive-or
|
|
TME_BUS_SIGNAL_LEVEL_ASSERTED with either TME_BUS_SIGNAL_LEVEL_HIGH
|
|
or TME_BUS_SIGNAL_LEVEL_LOW as appropriate, and provide that to the
|
|
device such that the device only needs to exclusive-or that with the
|
|
signal level to get the right asserted or negated level. Also
|
|
expanded the number of generic bits in a signal value, and improved
|
|
the set of macros used to compose and decompose signal values.
|
|
|
|
* bus/multibus/sun-sc.c generic/bus.c ic/m68k/m68k-misc.c
|
|
machine/sun/sun-mmu.c tme/generic/bus.h:
|
|
|
|
Made changes to the TLB protocol, to better support reentrant
|
|
devices. Now, a TLB entry passed to a fill function is expected to
|
|
be local on the stack, and it "reserves" the real, backing TLB entry
|
|
in the device's state. This prevents the case where a device tries
|
|
to fill the same backing TLB entry at the same time in two or more
|
|
threads. TLB fill functions for devices that need to invalidate
|
|
outstanding TLBs always invalidate the backing TLB entry. After a
|
|
TLB fill has finished, the caller checks its reservation on the
|
|
real, backing TLB, and copies the local TLB back if the reservation
|
|
has not been broken. Devices that want to use a TLB entry
|
|
immediately after the fill function returns must use the local TLB,
|
|
since it cannot have been invalidated yet. Also made fixes to TLB
|
|
entry users that avoid rereading fields that are destroyed by
|
|
invalidation, after the device has committed to using the TLB entry,
|
|
since invalidation can happen at any time. Also made the TLB
|
|
tme_bus_tlb_emulator_off_read member const.
|
|
|
|
* generic/Makefile.am:
|
|
* generic/bus-device.c:
|
|
* tme/generic/bus-device.h: Added generic bus-device support for real
|
|
bus interfaces and bus-mastering.
|
|
|
|
Fri Apr 30 01:46:01 2004 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* TODO: Updated.
|
|
|
|
* configure.in: Added the i825x6 to the list of ICs for the sun2.
|
|
|
|
* bus/multibus/Makefile.am: Now compile sun-mie.c.
|
|
|
|
* ic/Makefile.am: Now build tme_ic_i825x6.la.
|
|
|
|
* tme/common.h: Added the TME_X_VERSION versioning macros. Simplified
|
|
the definition of TME_RANGES_OVERLAP.
|
|
|
|
* tme/generic/ethernet.h: Now define TME_ETHERNET_LENGTH_SIZE and
|
|
TME_ETHERNET_HEADER_SIZE.
|
|
|
|
* tme/ic/m68k.h: Removed the ancient tme_m68k_tlb_bus_wrlock_on_read
|
|
macro.
|
|
|
|
Sun Mar 28 23:38:28 2004 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* generic/bus-device-auto.sh: Added.
|
|
|
|
Fri Feb 20 12:42:11 2004 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/m68k/m68k-execute.c [_TME_M68K_EXECUTE_FAST]: Make the fast
|
|
emulator load pointers const.
|
|
|
|
Fri Jan 09 03:42:48 2004 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* generic/bus-el.c ic/am9513.c ic/m68k/m68k-misc.c
|
|
machine/sun2/sun2-mainbus.c tme/generic/bus.h:
|
|
|
|
Increased the possible number of signal flag bits.
|
|
(TME_BUS_SIGNAL_WHICH): Renamed to TME_BUS_SIGNAL_INDEX, all callers
|
|
changed, and added a new macro with the same old name that simply
|
|
masks off the signal flag bits.
|
|
(TME_BUS_SIGNAL_WHICH_INT): Renamed to TME_BUS_SIGNAL_INDEX_INT, all
|
|
callers changed.
|
|
|
|
* generic/bus.c (tme_bus_addr_parse_any): Now use
|
|
tme_misc_unumber_parse_any().
|
|
|
|
* generic/disk.c (tme_disk_dimension_parse): Now use
|
|
tme_misc_unumber_parse().
|
|
|
|
* generic/fb-xlat-auto.sh: No longer emit some pixel-doubling code in
|
|
optimized translation functions for formats for 24 or more bits per
|
|
pixel, because that code would expand to shifts of more than 32 bits,
|
|
tripping gcc -Werror.
|
|
|
|
* host/gtk/gtk-screen.c (_tme_gtk_gdkimage_bipp): Fixed a bug where
|
|
this would fail when bipp > depth, which is common on deep
|
|
framebuffers.
|
|
|
|
* libtme/misc.c (_tme_misc_number_parse):
|
|
(tme_misc_unumber_parse_any):
|
|
(tme_misc_number_parse_any):
|
|
(tme_misc_unumber_parse):
|
|
(tme_misc_number_parse): Added.
|
|
|
|
* tme/misc.h: Added prototypes for tme_misc_unumber_parse_any,
|
|
tme_misc_number_parse_any, tme_misc_unumber_parse, and
|
|
tme_misc_number_parse.
|
|
|
|
Wed Oct 29 02:03:26 2003 Matthew Fredette <fredette@alum.mit.edu.>
|
|
|
|
* Release 0.2 out.
|
|
|
|
* host/gtk/gtk-screen.c: Some quick changes for GTK 2 compatibility.
|
|
|
|
Sat Oct 25 17:08:02 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/am9513.c ic/mm58167.c ic/z8530.c ic/z8530reg.h
|
|
ic/m68k/m68k-execute.c ic/m68k/m68k-insns.c ic/m68k/m68k-iset.txt
|
|
ic/m68k/m68k-misc.c ic/m68k/m68k-verify.c tmesh/tmesh-cmds.c
|
|
tmesh/tmesh-util.c:
|
|
|
|
RCS Id, header comment, and license sweep.
|
|
|
|
Thu Oct 16 03:02:11 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* configure.in: Now check for size_t.
|
|
Now make sure that <net/bpf.h> defines BIOCSHDRCMPLT before deciding
|
|
that bpf support is present.
|
|
|
|
* generic/bus.c generic/keyboard.c host/bsd/bsd-bpf.c
|
|
host/bsd/bsd-if.c host/gtk/gtk-display.h host/gtk/gtk-keyboard.c
|
|
host/posix/posix-tape.c ic/am9513.c ic/m68k/m68k-impl.h
|
|
libtme/log-prf.c machine/sun2/sun2-mmu.c scsi/scsi-cdb.c
|
|
scsi/scsi-tape.c serial/kb-sun.c serial/serial-kb.c
|
|
serial/serial-ms.c tme/generic/keyboard.h tme/scsi/scsi-device.h
|
|
tmesh/tmesh-cmds.c tmesh/tmesh.c:
|
|
|
|
Fixed many small bugs caught by the gcc3 -Wall -Wuninitialized.
|
|
|
|
* host/posix/posix-disk.c: Fixed various type problems found by gcc3.
|
|
|
|
* scsi/acb4000.c (_tme_acb4000_cdb_bad): Fixed a bug where we set the
|
|
amount of valid sense to TRUE instead of to a byte count.
|
|
|
|
* scsi/scsi-bus.c (_tme_scsi_bus_cycle): Work around an aliasing
|
|
warning.
|
|
|
|
* tme/common.h: Fixed a bug where tme_value64_set had a conditional
|
|
with two different result types.
|
|
When included by the implementation, now try to bring in standard
|
|
headers to get string and memory function prototypes. Added an
|
|
incomplete list of prototypes for when standard headers aren't
|
|
available.
|
|
|
|
Mon Sep 29 11:42:56 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* generic/fb-xlat-auto.sh: Added many comments, clarified some obscure
|
|
code, and fixed a bug where unoptimized halving translators wouldn't
|
|
shift the source FIFOs by two pixels when they had to.
|
|
|
|
Wed Sep 10 01:49:22 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* generic/fb-xlat-auto.sh: Fixed various bugs when the destination
|
|
FIFOs may not be aligned, and when doubling. These bugs were mostly
|
|
found by inspection, and the fixes haven't been tested.
|
|
|
|
Mon Sep 01 14:58:57 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* configure.in: Changed the version number.
|
|
Now only build the bsd host modules on BSD-like systems.
|
|
|
|
* generic/keyboard.c (_tme_keyboard_buffer_in0): Now examine any
|
|
keycode on the user's event to determine if an earlier press of a
|
|
different keysym from the same keycode has actually released.
|
|
|
|
* host/gtk/gtk-display.h: Now keep a mapping from keysym to keycode,
|
|
for those keysyms that can only be generated by one keycode.
|
|
|
|
* host/gtk/gtk-keyboard.c (_tme_gtk_keyboard_x11_new):
|
|
(_tme_gtk_keyboard_key_event):
|
|
(_tme_gtk_keyboard_new): Now keep a mapping from keysym to keycode,
|
|
for those keysyms that can only be generated by one keycode, and add
|
|
that keycode to key events.
|
|
|
|
* host/posix/posix-tape.c: Some changes to silence gcc
|
|
-Wuninitialized.
|
|
|
|
* host/posix/posix-tape.c (_tme_posix_tape_xfer1): When we hit the end
|
|
of the media, don't try to skip ahead to a nonexistent next segment.
|
|
|
|
* libtme/hash.c (_tme_hash_lookup_internal): When the lookup succeeds,
|
|
be sure to return the handle the bucket.
|
|
|
|
* libtme/log.c: Fixed many of the non-stdarg declarations of the
|
|
variable-argument functions.
|
|
|
|
* machine/sun2/SUN2-MULTIBUS: Now set a fixed key rate on kbd0, to
|
|
work around a bug in NetBSD where only the first of simultaneously
|
|
received keycodes will be processed.
|
|
|
|
* serial/serial-kb.c (_tme_serial_kb_callout): Cleaned up the code
|
|
that translates keyboard events into serial data, and added support
|
|
for rate-limiting.
|
|
(_tme_serial_kb_th_rate): Added.
|
|
(_tme_serial_kb_serial_read):
|
|
((tme_serial_,kb,keyboard): Added support for rate-limiting.
|
|
|
|
* serial/serial-kb.h: Added various members to control rate-limiting.
|
|
|
|
* tme/generic/keyboard.h: A keyboard event for a keysym can now
|
|
include the related keycode. This is for handling the case of a key
|
|
release giving a different keysym than the key press did because
|
|
modifiers changed in between.
|
|
|
|
Sat Aug 23 13:50:34 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* generic/Makefile.am: Be sure to distribute fb-xlat-auto.sh.
|
|
* generic/keyboard.c (_tme_keyboard_debug):
|
|
(tme_keyboard_buffer_new): Changes to support logging debug messages.
|
|
|
|
* host/gtk/Makefile.am:
|
|
* serial/Makefile.am:
|
|
* tme/generic/Makefile.am: Added some headers that weren't getting
|
|
distributed.
|
|
|
|
* host/gtk/gtk-keyboard.c (_tme_gtk_keyboard_new): Allow the keyboard
|
|
buffer to log messages using our log handle.
|
|
|
|
* host/posix/posix-tape.c: Changes to silence various gcc warnings.
|
|
|
|
* libtme/module.c: Added a hack to support older installed libltdls
|
|
that don't define lt_ptr.
|
|
|
|
* libtme/threads-sjlj.c: Fixed uses of struct fd_set.
|
|
|
|
* tme/common.h: Now include <netinet/in.h> for the byteswapping
|
|
functions.
|
|
|
|
* tme/generic/keyboard.h: Users can now give a log handle to the
|
|
keyboard buffer, for logging debug messages.
|
|
|
|
Fri Aug 22 16:39:30 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* serial/serial-kb.c (tme_serial_,kb,keyboard): Give the element's log
|
|
handle to the keyboard buffer, to enable debugging.
|
|
|
|
Tue Aug 12 23:00:40 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* machine/sun/Makefile.am: Now install sun-keyboards.txt and
|
|
my-sun-macros.txt.
|
|
|
|
* machine/sun/my-sun-macros.txt:
|
|
* machine/sun/sun-keyboards.txt: Added.
|
|
|
|
* machine/sun2/Makefile.am: Removed some old targets and dependencies.
|
|
|
|
* machine/sun2/SUN2-MULTIBUS: Reorganized and added more comments.
|
|
As-is, this now represents the common case of local disk, no network.
|
|
|
|
Fri Aug 08 13:33:45 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* tmesh/tmesh.c (main): Added support for the --noninteractive option.
|
|
Fixed a bug where we wouldn't report meaningful file and line number
|
|
information on early errors.
|
|
|
|
Thu Aug 07 22:14:46 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* bus/multibus/sun-sc.c (_tme_sun_sc_bus_cycle_data_reg): Added.
|
|
(_tme_sun_sc_bus_cycle_data):
|
|
(_tme_sun_sc_bus_cycle_cmd_stat): Now use
|
|
_tme_sun_sc_bus_cycle_data_reg to run the bus cycle.
|
|
(_tme_sun_sc_tlb_fill): The data register can't allow fast reading.
|
|
|
|
* host/posix/posix-disk.c (_tme_posix_disk_buffer_get): Now honor a
|
|
device's block size.
|
|
(tme_host_posix,disk): If the disk image is a character device, see if
|
|
it has a minimum block size.
|
|
|
|
* host/posix/posix-tape.c (__tme_posix_tape_command): Fixed a bug
|
|
where an error return value wouldn't get returned. Fixed a bug where
|
|
a LOAD control would get called out even when an error occured during
|
|
loading.
|
|
|
|
* scsi/emulexmt02.c: Replaced blocksize with block_size for
|
|
consistency.
|
|
(_tme_emulexmt02_cdb_block_limits): Added.
|
|
(tme_scsi,tape): Now handle the BLOCK LIMITS command.
|
|
|
|
* scsi/scsi-cdb.c (tme_scsi_device_cdb_illegal): Added.
|
|
(_tme_scsi_device_make_inquiry_string): Added.
|
|
(tme_scsi_device_make_inquiry_data): Added.
|
|
(tme_scsi_device_cdb_inquiry): Removed.
|
|
|
|
* scsi/scsi-device.c (tme_scsi_device_address_lun_aware): Always allow
|
|
an INQUIRY command, even for a LUN that isn't defined.
|
|
(tme_scsi_device_new): Set a NULL handler for the INQUIRY command by
|
|
default.
|
|
|
|
* scsi/scsi-disk.c: Renamed the tme-scsi-2 disk type to tme-scsi-1, to
|
|
reflect that it's a SCSI-1 disk.
|
|
(tme_scsi_disk_cdb_inquiry): Added.
|
|
(tme_scsi_disk_cdb_mode_sense):
|
|
(tme_scsi_disk_cdb_start_stop):
|
|
(tme_scsi_disk_cdb_prevent_allow):
|
|
(tme_scsi_disk_cdb_read_capacity): Crudely implemented these commands.
|
|
(tme_scsi_disk_cdb_read1):
|
|
(tme_scsi_disk_cdb_write1): Implemented these commands.
|
|
(_tme_scsi_disk_control): Made public.
|
|
(_tme_scsi_disk_connection_break): Made public.
|
|
(_tme_scsi_disk_connection_make): Made public.
|
|
(_tme_scsi_disk_connections_new): Made public.
|
|
(tme_scsi,disk): Install the disk handler for the INQUIRY command.
|
|
|
|
* scsi/scsi-tape.c (tme_scsi_tape_cdb_inquiry): Added.
|
|
(tme_scsi_tape_cdb_load_unload):
|
|
((tme_scsi_tape_cdb_prevent_allow): Made these command handlers do
|
|
nothing, for now.
|
|
(tme_scsi,tape): Install the tape handler for the INQUIRY command.
|
|
|
|
* tme/generic/disk.h: Define some disk controls.
|
|
|
|
* tme/scsi/scsi-cdb.h: Define various macros, types, and prototypes
|
|
for generating INQUIRY response data.
|
|
|
|
* tme/scsi/scsi-disk.h: Added some prototypes for some now-public
|
|
functions.
|
|
|
|
* tme/scsi/scsi-tape.h: Added a prototype for
|
|
tme_scsi_tape_cdb_inquiry.
|
|
|
|
Tue Aug 05 03:41:31 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* bus/multibus/sun-sc.c (_tme_sun_sc_scsi_cycle): If we're not
|
|
starting DMA, be sure to call out a wait-change cycle instead,
|
|
otherwise we can miss SCSI bus transitions.
|
|
|
|
* generic/Makefile.am: Now compile tape.c
|
|
|
|
* generic/tape.c host/posix/posix-tape.c scsi/emulexmt02.c
|
|
scsi/scsi-tape.c tme/generic/tape.h tme/scsi/scsi-tape.h:
|
|
|
|
Added.
|
|
|
|
* host/posix/Makefile.am: Now compile posix-tape.c.
|
|
|
|
* ic/z8530.c (_tme_z8530_bus_cycle): Added support for the WR0 reset
|
|
Rx interrupt command.
|
|
|
|
* ic/m68k/m68k-impl.h: Now always declare tme_m68k_verify_hook.
|
|
|
|
* ic/m68k/m68k-insns-auto.sh: Fixed a bug in the V bit calculation in
|
|
the asl insns.
|
|
|
|
* ic/m68k/m68k-misc.c (tme_m68k_verify_hook): Now always compile this
|
|
function.
|
|
|
|
* ic/m68k/m68k-verify.c (_tme_m68k_verify_end): Ignore the T bits when
|
|
verifying %sr.
|
|
|
|
* machine/sun2/SUN2-MULTIBUS: Updated.
|
|
|
|
* scsi/Makefile.am: Now compile emulexmt02.c and scsi-tape.c.
|
|
|
|
* scsi/acb4000.c (_tme_acb4000_address_lun): When marking a
|
|
nonextended sense as valid we now have to indicate how many bytes it
|
|
contains.
|
|
|
|
* scsi/acb4000.c:
|
|
* tme/scsi/scsi-device.h: Fixed a comment.
|
|
|
|
* scsi/scsi-bus.c (_tme_scsi_bus_cycle): Now be more universal about
|
|
remembering the last SCSI bus state we called out to each connection,
|
|
and call out whenever that state changes and the connection wants a
|
|
callout. When a connection gives us an empty DMA sequence, instead of
|
|
aborting just immediately call out. When a connection is in a DMA
|
|
sequence and the bus gets reset, try to reset on behalf of the
|
|
connection.
|
|
|
|
* scsi/scsi-cdb.c (tme_scsi_device_cdb_request_sense): Now require
|
|
that the valid marker for nonextended senses give the length of the
|
|
sense.
|
|
|
|
* scsi/scsi-device.c (tme_scsi_device_target_phase): Now log up to 128
|
|
bytes of output in various phases.
|
|
(_tme_scsi_device_cycle): Now log short transfers.
|
|
(tme_scsi_device_target_dsmf): Fixed a comment.
|
|
|
|
* scsi/scsi-disk.c (_tme_scsi_disk_connections_new): Fixed a usage
|
|
string.
|
|
(tme_disk,new): Fixed a comment.
|
|
|
|
* serial/ms-mssystems.c: Removed the 3-byte packet support, since it's
|
|
apparently only found on the Tadpole SPARCbooks.
|
|
|
|
* serial/serial-ms.c (_tme_serial_ms_serial_config): Now store the
|
|
peer's serial configuration.
|
|
|
|
* serial/serial-ms.h: Now store the peer's serial configuration.
|
|
|
|
* tme/connection.h: Now define TME_CONNECTION_TAPE.
|
|
|
|
* tme/generic/Makefile.am: Now install tape.h.
|
|
|
|
* tme/scsi/Makefile.am: Now install scsi-tape.h.
|
|
|
|
Thu Jul 31 19:03:16 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* scsi/scsi-bus.c (_tme_scsi_bus_cycle): Fixed some uses of dma_in to
|
|
dma; caught by gcc -Wuninitialized.
|
|
|
|
* tmesh/tmesh-cmds.c (_tmesh_command_log): Wrapped some otherwise
|
|
unused declarations in !TME_NO_LOG.
|
|
|
|
Thu Jul 31 01:47:46 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* generic/Makefile.am: Now compile mouse.c.
|
|
|
|
* generic/fb.c (tme_fb_xlat_best): Fixed a bug where we wouldn't
|
|
reject translation functions that don't match the question.
|
|
|
|
* generic/keyboard.c: Fixed a comment.
|
|
|
|
* generic/mouse.c host/gtk/gtk-mouse.c serial/ms-mssystems.c
|
|
serial/serial-ms.c serial/serial-ms.h tme/generic/mouse.h:
|
|
|
|
Added.
|
|
|
|
* host/gtk/Makefile.am: Now compile gtk-mouse.c.
|
|
|
|
* host/gtk/gtk-display.c:
|
|
* host/gtk/gtk-display.h:
|
|
* host/gtk/gtk-keyboard.c: Many changes to add mouse support.
|
|
|
|
* host/gtk/gtk-screen.c: Many changes to improve the user interface.
|
|
Now include a menu for changing the scaling factor. Fixed bugs with
|
|
respect to event masks, mostly by adding an event box.
|
|
|
|
* ic/z8530.c (_tme_z8530_callout): Fixed a bug that caused us to never
|
|
check the callouts on channel B.
|
|
|
|
* ic/m68k/m68k-insns.c (tme_m68k_reset): Added a crude implementation
|
|
of the reset instruction.
|
|
|
|
* machine/sun2/SUN2-MULTIBUS: Updated.
|
|
|
|
* machine/sun2/sun2-mainbus.c (_tme_sun2_bus_signal): Instead of
|
|
aborting, just ignore the RESET signal from the CPU for now.
|
|
|
|
* serial/Makefile.am: Now compile serial-ms.c and ms-mssystems.c.
|
|
|
|
* tme/connection.h: Now define TME_CONNECTION_MOUSE.
|
|
|
|
Tue Jul 29 18:33:14 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* Makefile.am:
|
|
* tme/Makefile.am: Added scsi to SUBDIRS.
|
|
|
|
* configure.in: If long on the target is 64-bits, use it as our 64-bit
|
|
type. Substitute the scsi Makefiles.
|
|
|
|
* bus/multibus/3c400.c (TME_3C400_CSR_PUT_3c400): Corrected a
|
|
tme_betoh_u16 into a tme_htobe_u16.
|
|
|
|
* bus/multibus/Makefile.am: Now compile sun-sc.c.
|
|
|
|
* bus/multibus/sun-sc.c generic/disk.c generic/scsi.c
|
|
host/posix/posix-disk.c scsi/Makefile.am scsi/acb4000.c
|
|
scsi/disk-tme.c scsi/scsi-bus.c scsi/scsi-cdb.c scsi/scsi-device.c
|
|
scsi/scsi-disk.c scsi/scsi-msg.c tme/generic/disk.h
|
|
tme/generic/scsi.h tme/scsi/Makefile.am tme/scsi/scsi-cdb.h
|
|
tme/scsi/scsi-device.h tme/scsi/scsi-disk.h tme/scsi/scsi-msg.h:
|
|
|
|
Added.
|
|
|
|
* generic/Makefile.am: Now compile disk.c and scsi.c.
|
|
|
|
* generic/bus-device.c:
|
|
* generic/bus-el.c: Fixed a comment.
|
|
|
|
* host/posix/Makefile.am: Now compile posix-disk.c.
|
|
|
|
* host/posix/posix-memory.c:
|
|
* host/posix/posix-serial.c: Fixed comments.
|
|
|
|
* ic/mm58167.c: Fixed many significant problems with this emulation,
|
|
most notably that the size of the chip was not calculated correctly at
|
|
all. We now report with microsecond resolution, since SunOS's probe
|
|
routine requires this.
|
|
|
|
* ic/z8530.c (_tme_z8530_intack): Simplified and fixed bugs in how
|
|
variable interrupt vectors are computed. For now, since there's no
|
|
emulation of the IEI pin, we just behave as if it's always tied low,
|
|
so we never put any vector on the bus during a hard interrupt
|
|
acknowledge.
|
|
(_tme_z8530_bus_cycle): Now ignore all WR0 CRC reset commands. Now
|
|
support the WR0 transmitter reset command. Now support reads of RR10
|
|
and RR14.
|
|
|
|
* ic/m68k/m68k-insns-auto.sh: The movem instructions cannot fault when
|
|
the register mask is zero. Now that we generally have a 64-bit type
|
|
available, fixed various bugs in the 64-bit multiply and divide
|
|
instructions.
|
|
|
|
* ic/m68k/m68k-insns.c (tme_m68k_movec): Now appropriately mask values
|
|
loaded into control registers. movec only has a long version, and
|
|
SunOS on the Sun-2 doesn't necessarily clear the remainder of the data
|
|
register it uses to load %sfc and %dfc.
|
|
|
|
* ic/m68k/m68k-misc.c (tme_m68k_exception_process_start): Fixed a bug
|
|
where the T bits weren't cleared. This bug was found by SunOS on the
|
|
sun2, which starts at least init in usermode with tracing enabled.
|
|
|
|
* ic/m68k/m68k-verify.c (tme_m68k_verify_init): Now assume that the
|
|
CPU generates 28-bit addresses. SunOS 3 on the Sun-2 does this.
|
|
|
|
* machine/sun/tme-sun-idprom.pl: Added support for the obscure
|
|
Roadrunner-MB1.
|
|
|
|
* machine/sun2/sun2-bwtwo.c: Fixed various comments.
|
|
Because SunOS's probe routine fails otherwise, added support for the
|
|
entire 2KB page starting at the CSR to appear undecoded, i.e., to look
|
|
like the CSR repeated 1024 times.
|
|
|
|
* machine/sun2/sun2-impl.h: Now define TME_SUN2_DVMA_SIZE_MBMEM and
|
|
TME_SUN2_DVMA_SIZE_VME.
|
|
Now make struct tme_sun2_bus_connection public, since the bus DVMA TLB
|
|
filler needs to know which bus it's filling for.
|
|
|
|
* machine/sun2/sun2-mainbus.c (_tme_sun2_connections_new): When making
|
|
the connections for the mbmem or vme buses, be sure to set the last
|
|
address that we decode on the bus, for DVMA purposes.
|
|
|
|
* machine/sun2/sun2-mmu.c (_tme_sun2_bus_tlb_fill): Fixed many bugs
|
|
involving filling TLB entries for bus's DVMA regions.
|
|
(_tme_sun2_mmu_pte_set): Added a missing protection.
|
|
|
|
* tme/common.h: Added some crude support for 64-bit math, even for
|
|
compilers that offer no 64-bit type at all.
|
|
|
|
* tme/connection.h: Now define TME_CONNECTION_SCSI and
|
|
TME_CONNECTION_DISK.
|
|
|
|
* tme/generic/Makefile.am: Added more headers.
|
|
|
|
* tme/generic/bus-device.h: Corrected a comment.
|
|
|
|
* tme/generic/ic.h: Corrected the 64-bit support.
|
|
|
|
* tmesh/tmesh-cmds.c (_tmesh_command_log): Added.
|
|
|
|
* tmesh/tmesh-impl.h: Now define TMESH_COMMAND_LOG.
|
|
|
|
* tmesh/tmesh-input.y: Added support for parsing the `log' command.
|
|
|
|
Tue Jul 22 18:30:31 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* generic/fb-xlat-auto.sh: Changes to silence gcc -Wuninitialized.
|
|
* host/gtk/gtk-keyboard.c (_tme_gtk_keyboard_lookup): Changes to
|
|
silence gcc -Wuninitialized.
|
|
|
|
* libtme/module.c (tme_module_open): Changes to silence gcc
|
|
-Wuninitialized.
|
|
|
|
* libtme/threads-sjlj.c (tme_sjlj_dispatch): Declared some locals
|
|
volatile to silence gcc's setjmp-related warning.
|
|
|
|
Fri Jun 27 21:30:37 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* Makefile.am: Added the serial directory to SUBDIRS.
|
|
* configure.in: Many changes to support framebuffer emulation and X11
|
|
and gtk elements. Also added some serial elements support.
|
|
|
|
* generic/Makefile.am: Now create fb-xlat-auto.c and build fb.c and
|
|
keyboard.c.
|
|
|
|
* generic/bus-device.c:
|
|
* generic/bus-el.c:
|
|
* generic/bus.c: Although I hate doing this, various changes to
|
|
support a single bus connection connecting to a bus region sparsely.
|
|
|
|
* generic/fb-xlat-auto.sh: Now declare src_bypb to include one more
|
|
extra line of data, to make a total of two.
|
|
Fixed a bug where translating and halving would really translate every
|
|
line twice. Now when we reach the end of a line we skip the next
|
|
line, to move to the next pair of lines.
|
|
|
|
* generic/fb.c generic/keyboard.c host/gtk/Makefile.am
|
|
host/gtk/gtk-display.c host/gtk/gtk-display.h
|
|
host/gtk/gtk-keyboard.c host/gtk/gtk-screen.c libtme/hash.c
|
|
machine/sun2/sun2-bwtwo.c serial/Makefile.am serial/kb-sun.c
|
|
serial/serial-kb.c serial/serial-kb.h tme/hash.h tme/misc.h
|
|
tme/generic/fb.h tme/generic/keyboard.h:
|
|
|
|
Added.
|
|
|
|
* generic/keyboard.c: Disabled debug output.
|
|
|
|
* host/Makefile.am: Added gtk to DIST_SUBDIRS.
|
|
|
|
* ic/am9513.c (_tme_am9513_th_timer): Removed a newline from a log
|
|
statement.
|
|
|
|
* ic/z8530.c (_tme_z8530_channel_reset): Fixed an incorrect reset
|
|
value for RR3.
|
|
(_tme_z8530_config): Simply ignore a peer's request to change the
|
|
serial configuration.
|
|
|
|
* ic/m68k/m68k-execute.c: To fix a problem where m68k execution could
|
|
possibly never yield (by oscillating back and forth between fast and
|
|
slow execution, for example) we make sure that we never run more than
|
|
_tme_m68k_instruction_burst before checking for external interrupts
|
|
and yielding.
|
|
|
|
* ic/m68k/m68k-impl.h: Now in addition to _tme_m68k_instruction_burst,
|
|
the maximum burst length, there is
|
|
_tme_m68k_instruction_burst_remaining, which is the maximum number of
|
|
instructions remaining in the current burst.
|
|
|
|
* ic/m68k/m68k-iset-expand.pl:
|
|
* ic/m68k/m68k-opmap-make.pl: Made the RCS keywords, copyright and
|
|
license like other files.
|
|
|
|
* ic/m68k/m68k-misc.c (tme_m68k_new): Now initialize the new
|
|
_tme_m68k_instruction_burst_remaining struct member.
|
|
|
|
* libtme/Makefile.am: Now compile hash.c, and use the GTK CFLAGS.
|
|
|
|
* libtme/misc.c (tme_misc_tokenize):
|
|
(tme_free_string_array): Added.
|
|
|
|
* libtme/module.c (tme_module_open): Now use tme_misc_tokenize to
|
|
tokenize.
|
|
|
|
* libtme/threads-sjlj.c: Although I hate doing this, many changes to
|
|
support using the GTK event loop.
|
|
|
|
* machine/sun2/Makefile.am: Now build sun2-bwtwo.c.
|
|
|
|
* machine/sun2/SUN2-MULTIBUS: Added commands to create a real physical
|
|
console.
|
|
|
|
* machine/sun2/sun2-mainbus.c (_tme_sun2_bus_intack): Now acknowledge
|
|
interrupts on the obmem bus too, since the bwtwo z8530s are there.
|
|
|
|
* tme/Makefile.am: Now install misc.h and hash.h.
|
|
|
|
* tme/common.h: Now define tme_letoh_u16() and tme_letoh_u32(x).
|
|
Declare tme_free_string_array().
|
|
|
|
* tme/connection.h: Add connection types for keyboards and
|
|
framebuffers.
|
|
|
|
* tme/threads.h: Under _TME_HAVE_GTK, declare tme_threads_gtk_init.
|
|
|
|
* tme/tme.h: Now include <tme/hash.h> and <tme/misc.h>.
|
|
|
|
* tme/generic/Makefile.am: Now install fb.h and keyboard.h.
|
|
|
|
* tme/generic/bus-device.h:
|
|
* tme/generic/bus.h: Changes to support a single bus connection
|
|
connecting to a bus region sparsely.
|
|
|
|
* tmesh/Makefile.am: Now link with the GTK libraries.
|
|
|
|
Fri Jun 27 01:37:57 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* generic/fb-xlat-auto.sh: Added.
|
|
|
|
Thu Jun 26 13:16:12 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* tme/generic/ic.h: Fixed grammar in a comment.
|
|
|
|
Sun May 18 02:40:56 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* configure.in: Changed the version number to 0.0; this is very alpha.
|
|
There are now fewer include directories under tme/; many unnecessary
|
|
headers that belonged to modules were removed.
|
|
|
|
* bus/multibus/3c400.c: No longer include <tme/bus/multibus/3c400.h>.
|
|
|
|
* bus/multibus/Makefile.am generic/Makefile.am host/bsd/Makefile.am
|
|
host/posix/Makefile.am ic/Makefile.am ic/m68k/Makefile.am
|
|
libtme/Makefile.am machine/sun/Makefile.am machine/sun2/Makefile.am
|
|
tmesh/Makefile.am:
|
|
|
|
Added library and module versioning.
|
|
|
|
* host/bsd/bsd-bpf.c:
|
|
* host/bsd/bsd-if.c: Now include "bsd-impl.h" instead of
|
|
<tme/host/bsd.h>.
|
|
|
|
* host/bsd/bsd-impl.h:
|
|
* machine/sun/tme-sun-idprom.pl: Added.
|
|
|
|
* machine/sun2/SUN2-MULTIBUS: Changed the extension on the PROM and
|
|
IDPROM files from .dat to .bin.
|
|
|
|
* machine/sun2/SUN2-MULTIBUS: Changed the name of the PROM filename to
|
|
match the documentation.
|
|
|
|
* tme/Makefile.am: Removed the host and bus include directories; they
|
|
don't exist anymore.
|
|
|
|
Sat May 17 20:34:07 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* acinclude.m4: Added an RCS Id and a short comment.
|
|
* configure.in: Added an RCS Id, the copyright, and license. Do a
|
|
real path search for perl.
|
|
|
|
* libtme/log-prf.c:
|
|
* libtme/module.c:
|
|
* machine/sun2/sun2-mainbus.c: Changes to silence gcc -Wuninitialized.
|
|
|
|
Fri May 16 21:48:16 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* Makefile.am TODO acconfig.h configure.in modules bus/Makefile.am
|
|
bus/multibus/3c400.c bus/multibus/Makefile.am generic/Makefile.am
|
|
generic/bus-device.c generic/bus-el.c generic/bus.c
|
|
host/bsd/Makefile.am host/bsd/bsd-bpf.c host/posix/Makefile.am
|
|
host/posix/posix-memory.c host/posix/posix-serial.c ic/Makefile.am
|
|
ic/am9513.c ic/mm58167.c ic/z8530.c ic/m68k/Makefile.am
|
|
ic/m68k/m68010.c ic/m68k/m68k-impl.h ic/m68k/m68k-insns-auto.sh
|
|
ic/m68k/m68k-misc.c libtme/Makefile.am libtme/alloc.c
|
|
libtme/element.c libtme/log-prf.c libtme/log.c libtme/misc.c
|
|
libtme/module.c libtme/threads-sjlj.c machine/Makefile.am
|
|
machine/sun/Makefile.am machine/sun/sun-mmu.c
|
|
machine/sun2/Makefile.am machine/sun2/SUN2-MULTIBUS
|
|
machine/sun2/sun2-impl.h machine/sun2/sun2-mainbus.c
|
|
machine/sun2/sun2-mmu.c tme/Makefile.am tme/common.h
|
|
tme/connection.h tme/element.h tme/log.h tme/module.h tme/tme.h
|
|
tme/tmesh.h tme/generic/bus-device.h tme/generic/bus.h
|
|
tme/ic/am9513.h tme/ic/m68k.h tme/ic/mm58167.h tme/ic/z8530.h
|
|
tmesh/Makefile.am tmesh/tmesh-cmds.c tmesh/tmesh-impl.h
|
|
tmesh/tmesh-input.y tmesh/tmesh-util.c tmesh/tmesh.c:
|
|
|
|
By far, this is the worst bulk commit I've ever done. Many changes
|
|
to simplify the element interface as much as possible, to do modules
|
|
better, and to do logging better. Fixed a small number of actual
|
|
bugs. Also converted to modern autoconf and automake, because the
|
|
module support requires modern libtool. Also added the main libtme,
|
|
libtmesh, and tmesh itself.
|
|
|
|
* ic/m68k/m68k-verify.c: Now include <stdio.h>.
|
|
|
|
Fri May 16 17:50:17 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* acinclude.m4 (AC_CHECK_ALIGNOF): Now takes only a size, in bits, to
|
|
check the alignment for. Before, it used to take a string of the form
|
|
intN_t, which wouldn't work on systems that don't define an intN_t
|
|
type. When cross-compiling, assume the target requires alignment
|
|
equal to the size. Now use AC_DEFINE_UNQUOTED's third argument to
|
|
specify the config.h.in comment.
|
|
(AC_CHECK_SHIFTMAX): Added.
|
|
(AC_SYS_SOCKADDR_SA_LEN): Now use AC_DEFINE_UNQUOTED's third argument
|
|
to specify the config.h.in comment.
|
|
|
|
Thu May 15 15:52:08 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/m68k/m68k-insns-auto.sh: Fixed bugs in the shift and rotate
|
|
insns, where we might try to shift by an amount greater than the
|
|
maximum meaningful shift for a given size.
|
|
|
|
Sat May 10 15:41:23 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* acinclude.m4 (AC_CHECK_ALIGNOF): Fixed a bug where this would stop
|
|
on the first misalignment, instead of continuing to find the true
|
|
minimum alignment. For example, this would have found the minimum
|
|
32-bit alignment to be 4 instead of 2 on a 68000 or 68010, stopping on
|
|
the misaligned address 3.
|
|
|
|
* configure.in ic/Makefile.am ic/m68k/Makefile.am machine/Makefile.am
|
|
machine/sun2/Makefile.am tme/Makefile.am:
|
|
|
|
Some early distribution work.
|
|
|
|
* ic/m68k/m68k-insns-auto.sh:
|
|
* ic/m68k/m68k-misc-auto.sh: Fixed some bad macro and type name
|
|
references.
|
|
|
|
* ic/m68k/m68k-insns-auto.sh:
|
|
* ic/m68k/m68k-misc-auto.sh: Handled the rename of the aligned and
|
|
unaligned memory access rwlocking macros, and use the new
|
|
tme_memory_sequence_ rwlocking macros. Generally made things a little
|
|
easier to read, although we do rely on the optimizer to do the right
|
|
thing somewhat more.
|
|
|
|
* tme/threads.h: Renamed the memory-access locking functions to be
|
|
tme_memory_HOW_WHATlock, where HOW is aligned or unaligned, and WHAT
|
|
is rd or wr. Now define the tme_memory_sequence_WHATlock macros, used
|
|
when doing a sequence of memory accesses that must appear to be
|
|
atomic.
|
|
Now define TME_SEQUENCE_ACCESS_NOT_COSTLIER as TRUE if locking for a
|
|
sequence and locking for an aligned access have the same cost, else
|
|
define it as FALSE.
|
|
|
|
Sat May 10 00:31:32 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/m68k/m68k-insns-auto.sh: Overhauled the shift instructions to not
|
|
use loops.
|
|
|
|
Fri May 09 17:45:06 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/m68k/m68k-execute.c: As an optimization, now require the
|
|
individual insn functions to use TME_M68K_INSN_CANFAULT if they may
|
|
fault, instead of figuring out every time if an insn can fault or not.
|
|
Check that insn functions have set it if they need it, and left it
|
|
unset if they do not need it.
|
|
|
|
* ic/m68k/m68k-execute.c: Made some changes to somewhat optimize
|
|
certain effective address calculations.
|
|
|
|
* ic/m68k/m68k-impl.h: Now define TME_M68K_INSN_CANFAULT.
|
|
|
|
* ic/m68k/m68k-impl.h: Renumbered the TME_M68K_SIZE_ macros slightly
|
|
to enable an optimization on effective address
|
|
predecrement/postincrement calculation. Grew the memory transfer
|
|
function arrays to match.
|
|
Moved the generic IC data structure to the top of the m68k structure,
|
|
to enable register indexing to happen without an offset.
|
|
Removed _tme_m68k_areg_increment, it's no longer needed.
|
|
|
|
* ic/m68k/m68k-insns-auto.sh:
|
|
* ic/m68k/m68k-insns.c: Now use TME_M68K_INSN_CANFAULT where it's
|
|
needed. Also fixed some random restarting bugs in some insns.
|
|
|
|
* ic/m68k/m68k-misc.c: Removed _tme_m68k_areg_increment, it's no
|
|
longer needed. Grew the memory transfer function arrays to match the
|
|
renumbering of the TME_M68K_SIZE_ macros, and added some preprocessor
|
|
error checking on those macros.
|
|
|
|
Fri May 09 14:36:16 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* bus/multibus/3c400.c generic/bus-device.c generic/bus-el.c
|
|
generic/bus.c host/posix/posix-memory.c ic/am9513.c ic/mm58167.c
|
|
ic/z8530.c tme/generic/bus-device.h tme/generic/bus.h:
|
|
|
|
Bulk change to no longer require bus connections to have a
|
|
power-of-two width. This is largely a name change, renaming
|
|
address_mask to address_last, as nothing depended on the
|
|
address_mask being all-bits-one.
|
|
|
|
* bus/multibus/3c400.c (_tme_3c400_callout): Make buffer status values
|
|
have the minimum Ethernet frame size.
|
|
|
|
* ic/am9513.c: Now include <stdio.h>, in case
|
|
TME_AM9513_TRACK_INT_RATE is defined.
|
|
|
|
* ic/am9513.c: Under TME_AM9513_TRACK_INT_RATE, periodically report
|
|
the interrupt rates achieved by the various timers.
|
|
|
|
* machine/sun2/sun2-mmu.c (_tme_sun2_m68k_tlb_fill): Because
|
|
supervisor and user accesses go through different context registers,
|
|
TLBs are generally only ever valid for the supervisor or the user, but
|
|
not both. Fixed a bug where a TLB for a user-visible page would be
|
|
marked as good for the supervisor even if the mapping isn't the same
|
|
in the system context.
|
|
|
|
* tme/generic/ethernet.h: Now define TME_ETHERNET_CRC_SIZE.
|
|
|
|
Thu May 08 23:37:55 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/m68k/m68k-insns-auto.sh: Fixed bugs, found by the verifier, in
|
|
the SR and CCR immediate instructions.
|
|
|
|
* ic/m68k/m68k-verify.c: Now keep a short ring of PCs verified.
|
|
|
|
Thu May 08 19:22:10 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/z8530.c (_tme_z8530_intack): Changes to silence -Wuninitialized.
|
|
* ic/m68k/Makefile.am: No longer define _TME_M68K_OPW_OK.
|
|
* ic/m68k/m68k-execute.c: Changes to support verifying restarted
|
|
instructions.
|
|
|
|
* ic/m68k/m68k-impl.h: Fixed the definitions of the dummy
|
|
tme_m68k_verify_ macros.
|
|
|
|
* ic/m68k/m68k-impl.h: Now call tme_m68k_verify_end_branch inside
|
|
TME_M68K_INSN_BRANCH. Added a unique identifier member to the
|
|
sequence structure. Made a few functions take a const struct tme_m68k
|
|
*. Made changes to the verifier to support verifying restarted
|
|
instructions.
|
|
|
|
* ic/m68k/m68k-insns-auto.sh: Fixed a bug found by the verifier, where
|
|
the movem instructions weren't following the EA discipline correctly
|
|
and so would transfer to the wrong addresses after a restart.
|
|
|
|
* ic/m68k/m68k-misc.c (tme_m68k_go_slow): Now take a const struct
|
|
tme_m68k *.
|
|
(tme_m68k_sequence_empty):
|
|
(tme_m68k_sequence_fill): Made the argument that's supposed to be
|
|
read-only const. Under _TME_M68K_VERIFY, save and restore the
|
|
sequence unique identifier.
|
|
|
|
* ic/m68k/m68k-verify.c: Many changes to support verifying
|
|
instructions that ended only after they were restarted because of one
|
|
or more bus faults.
|
|
|
|
Thu May 08 13:35:43 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/m68k/m68k-execute.c:
|
|
* ic/m68k/m68k-impl.h:
|
|
* ic/m68k/m68k-misc.c: Replaced _TME_M68K_OPW_OK bits with new
|
|
_TME_M68K_VERIFY bits.
|
|
|
|
* ic/m68k/m68k-insns-auto.sh: In all memory access functions, added
|
|
calls to the verifier. Fixed a bug in the divide routines, found by
|
|
the verifier - the N flag in set based on the final small quotient,
|
|
not on the big one.
|
|
|
|
* ic/m68k/m68k-misc-auto.sh: Now define TME_M68K_IREG32_COUNT.
|
|
|
|
* ic/m68k/m68k-verify.c: Added.
|
|
|
|
Wed May 07 02:37:05 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* generic/bus-el.c (_tme_bus_connections_new): Store the final bus
|
|
interrupt signal number, not the raw ipl.
|
|
|
|
* ic/z8530.c: Although I hate doing this, too many changes to go into
|
|
detail. Much work to support interrupt driven operation.
|
|
|
|
* ic/z8530reg.h: Added definitions for RR3.
|
|
|
|
* ic/m68k/m68k-impl.h: Fixed a serious bug in the TME_M68K_FLAG_SR
|
|
definition that would zero part of the interrupt mask.
|
|
|
|
* ic/m68k/m68k-insns-auto.sh: Fixed a bug where negx wasn't preserving
|
|
the Z flag if the result was zero.
|
|
|
|
* machine/sun2/sun2-test.c (main): Fixed a bug where the zs0 ipl arg
|
|
was getting lost.
|
|
|
|
Mon May 05 23:20:11 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* TODO: Updated.
|
|
|
|
* generic/serial.c (tme_serial_buffer_copyout): Fixed a bug where if
|
|
we were copying to a NULL buffer and the copyout wrapped in the ring
|
|
buffer, we would do pointer arithmetic on the NULL.
|
|
|
|
* ic/m68k/m68010.c (_tme_m68010_rte): Fixed a bug where we forgot to
|
|
recover the group 0 function code and address for the cycle restart.
|
|
Fixed a bug where we wouldn't reset to extract our internal state from
|
|
the stack buffer.
|
|
|
|
* ic/m68k/m68k-insns-auto.sh: Fixed several instructions that trap or
|
|
do trap-like things to update PC to be the PC of the following
|
|
instruction before trapping.
|
|
(tme_m68k_read_mem): Fixed a memcpy direction bug.
|
|
|
|
* ic/m68k/m68k-insns.c: Fixed several instructions that trap or do
|
|
trap-like things to update PC to be the PC of the following
|
|
instruction before trapping.
|
|
|
|
* libtme/threads-sjlj.c (tme_sjlj_cond_notify): Fixed a bug where we
|
|
would cancel a thread's wait condition instead of notifying the
|
|
thread.
|
|
|
|
* machine/sun/sun-mmu.c (tme_sun_mmu_tlb_fill): Support the new
|
|
expansive MMU PTE protections.
|
|
|
|
* machine/sun2/sun2-mainbus.c (_tme_sun2_bus_intack): Now acknowledge
|
|
soft interrupts.
|
|
(tme_machine_sun2_clock_new): Fixed a bug where we had the Timer 2
|
|
output miswired.
|
|
|
|
* machine/sun2/sun2-mmu.c: Many changes to support the new full
|
|
understanding of sun2 PTE protections.
|
|
|
|
* tme/machine/sun.h: Expanded on the generic PTE protections, to
|
|
support the more expressive sun2 protections.
|
|
|
|
Sun May 04 22:46:12 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/am9513.c (_tme_am9513_counters_disarm): Added.
|
|
(_tme_am9513_th_timer): Try to avoid 32-bit integer overflow when
|
|
calculating the sleep time.
|
|
(_tme_am9513_bus_cycle): Now support the disarm timers command.
|
|
|
|
* ic/mm58167.c: Changes to silence -Wuninitialized.
|
|
|
|
* ic/mm58167.c:
|
|
* tme/ic/mm58167.h: Added.
|
|
|
|
* ic/z8530.c: Although I hate doing this, too much work to go into
|
|
detail. Did more groundwork for eventually generating interrupts.
|
|
|
|
* ic/m68k/m68k-execute.c: Now wrap the execute hook call in
|
|
_TME_M68K_OPW_OK.
|
|
|
|
* ic/m68k/m68k-misc.c (tme_m68k_exception_process_start): Fixed a bug
|
|
where the new ipl mask was put into the sr at the wrong position.
|
|
|
|
* machine/sun2/sun2-mainbus.c (tme_machine_sun2_tod_new): Added.
|
|
|
|
* machine/sun2/sun2-mmu.c (_tme_sun2_obbus_fault_handler): Removed.
|
|
(_tme_sun2_bus_fault_handler):
|
|
(_tme_sun2_obio_fault_handler):
|
|
(_tme_sun2_obmem_fault_handler): Added.
|
|
(_tme_sun2_multibus_fault_handler): Now just call
|
|
_tme_sun2_bus_fault_handler.
|
|
(_tme_sun2_tlb_fill_mmu): Use the new bus-specific fault handlers.
|
|
|
|
* machine/sun2/sun2-test.c: Now create and connect the TOD chip.
|
|
|
|
* tme/ic/Makefile.am: Updated.
|
|
|
|
Sat May 03 19:27:07 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* TODO: Updated.
|
|
|
|
* ic/m68k/m68k-execute.c: Fixed multiple bugs in the handling of brief
|
|
EA extension words.
|
|
|
|
* ic/m68k/m68k-insns-auto.sh: Fixed a bug where subx and addx didn't
|
|
take the (previous) X flag into account when calculating flags.
|
|
|
|
* machine/sun2/sun2-control.c (_tme_sun2_control_cycle_handler): Now
|
|
call _tme_sun2_ipl_check whenever the enable register is written.
|
|
|
|
* machine/sun2/sun2-impl.h: Added macros for the enable register bits.
|
|
|
|
* machine/sun2/sun2-mainbus.c (_tme_sun2_ipl_check): Added.
|
|
(_tme_sun2_bus_signal): Now call _tme_sun2_ipl_check to update the ipl
|
|
driven to the CPU.
|
|
|
|
Fri May 02 17:37:10 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* TODO: Updated.
|
|
|
|
* acconfig.h acinclude.m4 bus/multibus/3c400.c
|
|
bus/multibus/Makefile.am generic/ethernet.c host/bsd/Makefile.am
|
|
host/bsd/bsd-bpf.c host/bsd/bsd-if.c tme/generic/ethernet.h:
|
|
|
|
Added.
|
|
|
|
* configure.in: Now check for minimum alignments. Now check for
|
|
various headers and other things needed by the BSD code.
|
|
|
|
* bus/Makefile.am:
|
|
* generic/Makefile.am:
|
|
* host/Makefile.am:
|
|
* tme/generic/Makefile.am: Added support for new components.
|
|
|
|
* bus/multibus/3c400.c (_tme_3c400): Some changes to silence
|
|
-Wuninitialized.
|
|
|
|
* host/posix/posix-serial.c: Fixed some indentation, and one 0 to a
|
|
TME_OK.
|
|
|
|
* ic/am9513.c (_tme_am9513_counters_load):
|
|
(_tme_am9513_counters_arm): Added.
|
|
(_tme_am9513_th_timer): Try to avoid multiplication overflow when
|
|
calculating the number of basic ticks that have elapsed. Try to
|
|
handle armed and unarmed counters correctly.
|
|
(_tme_am9513_bus_cycle): Now load and arm counters correctly.
|
|
(tme_ic_am9513_new): Calculate the number of basic ticks in a
|
|
millisecond for the benefit of the timer thread.
|
|
|
|
* ic/m68k/m68010.c (_tme_m68010_rte): tme_m68k_rte_finish no longer
|
|
touches the sequence at all, so before calling it make sure the
|
|
sequence is exactly what it's supposed to be.
|
|
|
|
* ic/m68k/m68k-execute.c: In the fast executor, assert that the ITLB
|
|
entry allows fast reading for the current PC or that the PC is one
|
|
greater than the last address covered by the entry. Fixed the
|
|
fast-fetch-failed code to more correctly simulate a group 0 exception
|
|
and associated RTE.
|
|
|
|
* ic/m68k/m68k-insns-auto.sh: Cleaned up and fixed the code generated
|
|
for cmpm, addx, and subx. At least, cmpm wasn't getting its address
|
|
registers postincremented, and addx and subx weren't treating the Z
|
|
flag properly. In the fetch insns, take the address to fetch from as
|
|
an argument, instead of using the real ic->tme_m68k_ireg_pc with
|
|
tme_m68k_read
|
|
(which could actually update it, if recovering from a group 0
|
|
exception!)
|
|
|
|
* ic/m68k/m68k-misc-auto.sh: The slow-executor fetch macros now call
|
|
the fetch insns with the PC to fetch from.
|
|
|
|
* ic/m68k/m68k-misc.c (tme_m68k_rte_finish): No longer do anything
|
|
with the sequence at all, just redispatch it.
|
|
(tme_m68k_sequence_fill): Now set the sequence next-transfer to one,
|
|
to force a restart in case later code doesn't.
|
|
(tme_m68k_insn_buffer_xfer): The insn buffer is kept in host byte
|
|
order, not big-endian byte order.
|
|
|
|
* libtme/threads-sjlj.c: No longer track and relock a mutex that was
|
|
held when tme_sjlj_cond_wait_yield was called; the thread itself will
|
|
relock the mutex when it is restarted.
|
|
|
|
* machine/sun2/Makefile.am: Now build and link against the Multibus
|
|
and BSD libraries.
|
|
|
|
* machine/sun2/sun2-test.c (tme_memdup): Added.
|
|
(connect_elements): Now start the new convention of initializing the
|
|
new-connections lists to NULL and letting the new-connections
|
|
functions add elements incrementally.
|
|
(main): Now create the ec0 and bpf0 elements and add them to the
|
|
machine.
|
|
|
|
* tme/common.h: Added a macro for tme_dup and a prototype for
|
|
tme_memdup.
|
|
|
|
* tme/connection.h: Now define TME_CONNECTION_ETHERNET.
|
|
|
|
* tme/threads.h: Fixed a bug where the tme_thread_write macro was
|
|
defined to be the read syscall.
|
|
|
|
Tue Apr 29 20:28:05 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* AUTHORS:
|
|
* COPYING:
|
|
* NEWS:
|
|
* README: Added.
|
|
|
|
* generic/bus-device.c generic/bus-el.c host/posix/posix-serial.c
|
|
ic/z8530.c ic/m68k/m68k-misc.c machine/sun2/sun2-mainbus.c:
|
|
|
|
In all connections_new functions, add the new connection
|
|
possibilities to the list rooted at *_conns, instead of always
|
|
replacing the list.
|
|
|
|
* generic/bus-el.c host/posix/posix-memory.c ic/am9513.c
|
|
ic/m68k/m68k-execute.c ic/m68k/m68k-insns-auto.sh
|
|
ic/m68k/m68k-insns.c machine/sun2/sun2-mainbus.c:
|
|
|
|
Changes to silence -Wuninitialized.
|
|
|
|
* generic/serial.c:
|
|
* tme/generic/serial.h: Removed all instances of gen- in comments.
|
|
|
|
* host/posix/posix-serial.c (_tme_posix_serial_th_reader): Fixed bugs
|
|
in scanning the input for various escape-like sequences, especially
|
|
for the escaped break signal.
|
|
|
|
* host/posix/posix-serial.c (_tme_posix_serial_th_reader): Simplified
|
|
the code that decides to call out that we are readable.
|
|
(_tme_posix_serial_ctrl): Always try to call out reads if the
|
|
connection says it's readable, even if we already knew that.
|
|
(_tme_posix_serial_read): Fixed a bug where we would clear everything
|
|
*except* TME_SERIAL_CTRL_OK_READ, instead of clearing only that bit.
|
|
(tme_host_posix_serial_new): Return EINVAL on bad arguments.
|
|
|
|
* ic/Makefile.am: Now define DIST_SUBDIRS.
|
|
|
|
* ic/z8530.c (_tme_z8530_callout): Fixed a bug where we would use an
|
|
uninitialized chan variable to find WR9, which actually only exists in
|
|
channel A anyways.
|
|
(_tme_z8530_ctrl): Now always try to call out reads if the connection
|
|
says it's readable.
|
|
|
|
* libtme/threads-sjlj.c: Wrap all of the rwlock operations in
|
|
!TME_NO_DEBUG_LOCKS.
|
|
(tme_sjlj_threads_run): Changes to silence -Wuninitialized.
|
|
|
|
* tme/Makefile.am:
|
|
* tme/generic/Makefile.am: Now install roughly the correct files into
|
|
the correct place.
|
|
|
|
* tme/atomics.h: Fixed a bug where TME_ATOMIC_POINTER_TYPE was adding
|
|
an extra *.
|
|
|
|
* tme/element.h: Fixed bugs in the TME_NO_LOG versions of TME_LOG_X
|
|
and TME_LOG_FINISH.
|
|
|
|
Tue Apr 29 03:24:17 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* TODO:
|
|
* machine/sun2/sun2-test.c: Updated.
|
|
|
|
* generic/bus-device.c: Support the new generic bus signal interface.
|
|
(tme_bus_device_connection_score):
|
|
(tme_bus_device_connection_make):
|
|
(tme_bus_device_connection_break): These are now public.
|
|
|
|
* generic/bus-el.c: Added support for the new generic bus signal
|
|
interface.
|
|
(_tme_bus_line_raise): Removed.
|
|
(_tme_bus_signal):
|
|
(_tme_bus_intack): Added.
|
|
|
|
* generic/serial.c: Removed all uses of TME_ATOMIC.
|
|
(tme_serial_buffer_copyout): Fixed a bug where we would overwrite
|
|
data_flags with -1 early, resulting in our returning no data.
|
|
|
|
* host/posix/posix-serial.c: Too much work to go into detail.
|
|
Everything is at least sketched out.
|
|
|
|
* ic/am9513.c (_tme_am9513_callout):
|
|
(_tme_am9513_th_timer): Added.
|
|
(_tme_am9513_bus_cycle): Now properly handle the Clear Toggle Output
|
|
command, and log it correctly. Lock the new mutex on entry, call
|
|
_tme_am9513_callout if needed before exit, and unlock the mutex on
|
|
exit.
|
|
(tme_ic_am9513_new): Start the new timer thread.
|
|
|
|
* ic/z8530.c: Too many changes to go into detail. Highlights include
|
|
a real bus cycle handler, real channels, real serial connections, real
|
|
threads. Everything seems to be at least sketched out.
|
|
|
|
* ic/z8530reg.h: Added.
|
|
|
|
* ic/m68k/m68k-execute.c: Fixed a bug where we were using the return
|
|
value of tme_mutex_trylock as a truth value.
|
|
|
|
* ic/m68k/m68k-misc.c: Changed to support the new generic bus signal
|
|
interface and the new m68k bus interrupt interface.
|
|
|
|
* libtme/threads-sjlj.c (tme_sjlj_threads_run): Fixed a bug where we
|
|
wouldn't lock the mutex before returning from a condition wait. Fixed
|
|
a bug where we would block in select(2) instead of calling it with a
|
|
zero timeout.
|
|
(tme_sjlj_cond_wait_yield): Remember the mutex the thread had locked
|
|
so it can be relocked when the thread resumes.
|
|
(tme_sjlj_select_yield): Fixed bugs where we would treat the nfds
|
|
argument as the maximum fd, instead of the maximum fd plus one. Fixed
|
|
a bug where we couldn't handle NULL descriptor sets.
|
|
(tme_sjlj_read_yield):
|
|
(tme_sjlj_write_yield):
|
|
(tme_sjlj_read_yield):
|
|
(tme_sjlj_rwlock_init):
|
|
(tme_sjlj_rwlock_lock):
|
|
(tme_sjlj_rwlock_unlock): Added.
|
|
|
|
* machine/sun2/sun2-impl.h: Now track the interrupts asserted in the
|
|
system, and the last ipl asserted to the CPU.
|
|
|
|
* machine/sun2/sun2-mainbus.c (_tme_sun2_line_reset):
|
|
(_tme_sun2_line_halt):
|
|
(_tme_sun2_line_interrupt): Removed.
|
|
(_tme_sun2_bus_signal):
|
|
(_tme_sun2_bus_intack): Added.
|
|
(_tme_sun2_power): Use the generic bus signal interface to reset
|
|
everything.
|
|
(tme_machine_sun2_clock_new): Store how the Am9513 output pins are
|
|
connected to bus interrupt lines.
|
|
|
|
* machine/sun2/sun2-mmu.c (_tme_sun2_multibus_fault_handler): Added a
|
|
hack to avoid an mbmem bus error when accessed through virtual
|
|
0xffffffff, which apparently happens in the PROM NMI routine when it
|
|
polls the keyboard, even if it didn't probe a keyboard.
|
|
|
|
* tme/element.h: Fixed various const to _tme_const.
|
|
|
|
* tme/threads.h: Redid the setjmp/longjmp rwlock operations. Added
|
|
various new function prototypes and macros.
|
|
|
|
* tme/generic/bus-device.h: Support the new generic bus signal
|
|
interface. The tme_bus_device_connection_score,
|
|
tme_bus_device_connection_make, and tme_bus_device_connection_break
|
|
functions are now public. Fixed a const to _tme_const.
|
|
|
|
* tme/generic/bus.h: Added the new generic bus signal and interrupt
|
|
acknowledge interfaces. Fixed various const to _tme_const.
|
|
|
|
* tme/generic/serial.h: Now define TME_SERIAL_CTRL_OK_READ. Removed
|
|
the write method from a serial connection. All data transfer happens
|
|
with reads, with control signals to indicate when reads are OK.
|
|
Removed the TME_ATOMIC use in struct tme_serial_buffer.
|
|
(tme_serial_buffer_is_empty):
|
|
(tme_serial_buffer_is_full): Added.
|
|
|
|
* tme/ic/am9513.h: struct tme_am9513_socket now holds the basic clock
|
|
provided to the chip, and a mapping of its output pins to bus signals.
|
|
Fixed a const to _tme_const.
|
|
|
|
* tme/ic/m68k.h: Now define some m68k IPL constant macros. Add the
|
|
new m68k bus interrupt method. Fixed various const to _tme_const.
|
|
|
|
* tme/ic/z8530.h: Made the channel letters lowercase in structure
|
|
member names. Fixed a const to _tme_const.
|
|
|
|
Sat Apr 26 21:46:16 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* Makefile.am TODO configure.in generic/Makefile.am
|
|
generic/bus-device.c generic/bus-el.c generic/bus.c generic/serial.c
|
|
host/posix/posix-memory.c host/posix/posix-serial.c ic/am9513.c
|
|
ic/z8530.c ic/i386/i386-decode.c ic/i386/i386-misc-auto-make.sh
|
|
ic/i386/i386-opmaps-make.sh ic/i386/i386-save.c
|
|
ic/i386/i386-uinsns-auto-make.sh ic/i386/i386-uinsns.c
|
|
ic/i386/i386.h tme/generic/Makefile.am tme/generic/bus-device.h
|
|
tme/generic/bus.h tme/generic/ic.h tme/generic/serial.h
|
|
tme/ic/am9513.h tme/ic/z8530.h:
|
|
|
|
Added.
|
|
|
|
* bus/Makefile.am host/posix/Makefile.am ic/m68k/Makefile.am
|
|
machine/Makefile.am machine/sun/Makefile.am machine/sun2/Makefile.am
|
|
machine/sun2/sun2-test.c:
|
|
|
|
Updated.
|
|
|
|
* bus/bus-device.c bus/bus.c tme/bus-device.h tme/bus.h tme/ic.h:
|
|
|
|
Removed.
|
|
|
|
* host/posix/memory.c: Renamed to posix-memory.c.
|
|
|
|
* ic/m68k/m68k-execute.c: Under _TME_M68K_EXECUTE_FAST, at the
|
|
beginning of each instruction we do have to check if our ITLB has been
|
|
invalidated, as it might have been by some random (control) memory
|
|
cycle we just did.
|
|
Fixed bugs in the predecrement and postincrement EA handlers.
|
|
|
|
* ic/m68k/m68k-impl.h:
|
|
* machine/sun2/sun2-impl.h: Now include <tme/generic/ic.h>.
|
|
|
|
* ic/m68k/m68k-impl.h: Added support for logging.
|
|
|
|
* ic/m68k/m68k-insns-auto.sh: Fixed a serious movem bug where we would
|
|
start at bit 1 in the mask, and not bit 0.
|
|
In all memory transfer functions, log the transfer. Made the bus
|
|
cycle functions "work correctly". Fixed bugs in the generated divide
|
|
instructions.
|
|
|
|
* ic/m68k/m68k-insns.c (tme_m68k_swap): Fixed a bug where this
|
|
wouldn't work on big-endian systems.
|
|
(tme_m68k_link):
|
|
(tme_m68k_unlk): Fixed serious bugs where we simply didn't do what
|
|
these instructions are supposed to do.
|
|
|
|
* ic/m68k/m68k-iset.txt: On the 68010 and up, the move_from_sr and
|
|
move_from_ccr instructions don't read memory before writing it. Fixed
|
|
bugs in the encoding of the register bit-shifting with a register
|
|
count instructions.
|
|
|
|
* ic/m68k/m68k-misc.c (tme_m68k_idle): Use the renamed
|
|
tme_cond_wait_yield function.
|
|
(tme_m68k_new): Store the element in the IC.
|
|
(tme_m68k_go_slow): Use the TME_M68K_TLB_OK_FAST_READ to check for a
|
|
bad TLB entry.
|
|
(tme_m68k_exception_process): Don't insist on there being exceptions
|
|
to process. CPU-specific exception processors may handle them all,
|
|
yet still use this function to redispatch.
|
|
(_tme_m68k_execute_hook): Added.
|
|
|
|
* libtme/threads-sjlj.c (_tme_sjlj_then):
|
|
(_tme_sjlj_timeout):
|
|
(tme_sjlj_sleep_yield):
|
|
(tme_sjlj_select_yield): Added.
|
|
(tme_sjlj_threads_run): Cleaned up the threads dispatcher to support
|
|
threads waiting on classic select(2) fd sets,
|
|
(tme_sjlj_cond_wait_yield): Renamed from tme_sjlj_cond_wait.
|
|
(tme_sjlj_sleep): This function no longer yields.
|
|
|
|
* machine/sun/sun-mmu.c: Added some logging.
|
|
Disabled the explicit SEGINV support, for now. It appears that the
|
|
hardware MMU doesn't have a notion of an invalid PMEG. Now call the
|
|
post-MMU TLB fillers with the PTE struct and the virtual address.
|
|
|
|
* machine/sun2/sun2-control.c (_tme_sun2_control_cycle_handler): Don't
|
|
bother to fill the segmap register unless this is a read.
|
|
|
|
* machine/sun2/sun2-impl.h: Now include <tme/generic/bus.h>. Added
|
|
some support for logging.
|
|
|
|
* machine/sun2/sun2-mainbus.c: Added some support for logging.
|
|
(tme_machine_sun2_clock_new):
|
|
(tme_machine_sun2_zs_new): Added.
|
|
|
|
* machine/sun2/sun2-mmu.c: Too much to go into detail. Highlights:
|
|
Added some logging support.
|
|
Made the bus error behavior more correct. On the sun2, obio and obmem
|
|
don't generate bus errors. Now the post-MMU TLB filler takes the
|
|
original PTE entry and the original virtual address.
|
|
|
|
* tme/connection.h: Now define TME_CONNECTION_SERIAL.
|
|
|
|
* tme/element.h: Added logging support.
|
|
|
|
* tme/ic.h: Now include <tme/generic/bus.h>
|
|
|
|
* tme/threads.h: Defined more of the tme threads API.
|
|
|
|
* tme/ic/m68k.h: Now include <tme/generic/bus.h>.
|
|
|
|
* tme/machine/sun.h: Added support for logging.
|
|
Changed the interface to pass the whole PTE struct to the post-MMU TLB
|
|
fillers.
|
|
|
|
Sat Apr 26 14:44:07 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* bus/bus.c (tme_bus_cycle_xfer): Fixed a bug where we used
|
|
cycle_writer to get the reader's port size. When indexing bus router
|
|
arrays, we have to subtract out the participant's least port lane,
|
|
since the arrays don't include information for lanes not connected to
|
|
the participant.
|
|
|
|
Wed Apr 23 19:31:01 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* bus/Makefile.am bus/bus-device.c bus/bus.c host/Makefile.am
|
|
host/posix/Makefile.am host/posix/memory.c ic/Makefile.am
|
|
ic/m68k/m68k-impl.h libtme/Makefile.am libtme/threads-sjlj.c
|
|
machine/sun/Makefile.am machine/sun/sun-mmu.c
|
|
machine/sun2/Makefile.am machine/sun2/sun2-control.c
|
|
machine/sun2/sun2-impl.h machine/sun2/sun2-mainbus.c
|
|
machine/sun2/sun2-mmu.c machine/sun2/sun2-test.c tme/Makefile.am
|
|
tme/atomics.h tme/bus-device.h tme/bus.h tme/common.h
|
|
tme/connection.h tme/element.h tme/ic.h tme/threads.h
|
|
tme/ic/Makefile.am tme/ic/m68k.h tme/machine/Makefile.am
|
|
tme/machine/sun.h:
|
|
|
|
Added.
|
|
|
|
* ic/m68k/m68010.c (_tme_m68010_exception):
|
|
(_tme_m68010_rte): Added.
|
|
|
|
* ic/m68k/m68k-bus-auto.sh: Now generates the combined input/output
|
|
bus routers.
|
|
|
|
* ic/m68k/m68k-execute.c:
|
|
* ic/m68k/m68k-insns.c:
|
|
* ic/m68k/m68k-misc.c: Although I hate doing this, "too many changes
|
|
to list."
|
|
|
|
* ic/m68k/m68k-insns-auto.sh: Some minor copyright and cosmetic fixes.
|
|
Updated the bus cycle functions to support the latest generic bus
|
|
cycle idea.
|
|
|
|
* ic/m68k/m68k-iset-expand.pl: When the EA is an immediate, just emit
|
|
the immediate information and skip the EA information - we don't want
|
|
to use the EA path in this case.
|
|
|
|
* ic/m68k/m68k-iset.txt: moveq is now its own insn.
|
|
|
|
* ic/m68k/m68k-misc-auto.sh: Copyright sweep.
|
|
|
|
* ic/m68k/m68k-opmap-make.pl: Fixed some random bugs, and correctly
|
|
handle the case where EA and immediate operand must be undefined for a
|
|
pattern, to avoid using the EA and immediate operand in any root
|
|
entry.
|
|
|
|
* ic/m68k/m68k.h: Removed.
|
|
|
|
Sun Apr 20 21:33:05 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/m68k/m68k-bus-auto.sh: Added.
|
|
|
|
Fri Apr 18 04:56:36 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/m68k/m68k-insns-auto.sh: Added support for generating the moveq32
|
|
insn. Cleaned up and fixed some bugs in the bus cycle functions.
|
|
|
|
* ic/m68k/m68k-misc-auto.sh: Cleaned up the set of registers that we
|
|
define. Added better locking support to the instruction fetch macros.
|
|
|
|
Tue Apr 15 13:32:37 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/m68k/m68k-insns-auto.sh: Unfortunately, too much work to list in
|
|
detail. Improved the arithmetic function flag-setting code to compile
|
|
well on i386 with gcc -O2. Added many special-purpose memory read and
|
|
write functions, and finally introduced the general bus-cycle read and
|
|
write functions. Added many new instructions, including multiply and
|
|
divide.
|
|
|
|
Sat Apr 05 18:47:38 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* machine/Makefile.am: Added.
|
|
|
|
Tue Apr 01 20:13:40 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/m68k/Makefile.am: Build decoders for the 68000, 68010, and 68020.
|
|
* ic/m68k/m68k-iset-expand.pl: Added a very basic preprocessor to
|
|
support generating different instruction sets for different CPUs. Now
|
|
whenever an instruction wants the EA, its operand is eax.32 even if
|
|
the known EA is address register indirect.
|
|
|
|
* ic/m68k/m68k-iset.txt: This should be the complete integer
|
|
instruction set for the 68000, 68010, 68020, and 68030.
|
|
|
|
* ic/m68k/m68k-opmap-make.pl: Added comments, and reworked to support
|
|
compiling instruction sets for different CPUs together, reusing
|
|
submaps and opcode maps whenever possible.
|
|
|
|
* ic/m68k/m68k.h: Before the -impl.h split.
|
|
|
|
Sun Mar 30 22:04:15 2003 Matthew Fredette <fredette@alum.mit.edu>
|
|
|
|
* ic/m68k/Makefile.am ic/m68k/m68010.c ic/m68k/m68k-execute.c
|
|
ic/m68k/m68k-insns-auto.sh ic/m68k/m68k-insns.c
|
|
ic/m68k/m68k-iset-expand.pl ic/m68k/m68k-iset.txt
|
|
ic/m68k/m68k-misc-auto.sh ic/m68k/m68k-misc.c
|
|
ic/m68k/m68k-opmap-make.pl ic/m68k/m68k.h:
|
|
|
|
Added.
|