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