--- tme/ChangeLog 2018/04/24 16:37:52 1.1.1.1 +++ tme/ChangeLog 2018/04/24 16:39:15 1.1.1.3 @@ -1,846 +1,2372 @@ -Sun May 18 00:07:59 2003 Matthew Fredette +Sun May 15 01:24:11 2005 Matthew Fredette - * Release 0.0 out. + * Release 0.4 out. - * configure.in: Changed the version number to 0.0; this is very alpha. - There are now fewer include directories under tme/; many - unnecessary headers that belonged to modules were removed. - - * bus/multibus/3c400.c: No longer include . - * bus/multibus/Makefile.am: Added library and module versioning. - * generic/Makefile.am: Added library and module versioning. - * host/bsd/Makefile.am: Added library and module versioning. - * host/bsd/bsd-bpf.c: Now include "bsd-impl.h" instead of . - * host/bsd/bsd-if.c: Now include "bsd-impl.h" instead of . - * host/bsd/bsd-impl.h: Added. - * host/posix/Makefile.am: Added library and module versioning. - * ic/Makefile.am: Added library and module versioning. - * ic/m68k/Makefile.am: Added library and module versioning. - * libtme/Makefile.am: Added library and module versioning. - * machine/sun/Makefile.am: Added library and module versioning. - * machine/sun/tme-sun-idprom.pl: Added. - * machine/sun2/Makefile.am: Added library and module versioning. - * machine/sun2/SUN2-MULTIBUS: Changed the extension on the PROM and IDPROM - files from .dat to .bin. - - * machine/sun2/SUN2-MULTIBUS: Changed the name of the PROM filename to match the documentation. - * tme/Makefile.am: Removed the host and bus include directories; they don't exist anymore. - * tmesh/Makefile.am: Added library and module versioning. - -Sat May 17 20:16:06 2003 Matthew Fredette - - * acinclude.m4: Added an RCS Id and a short comment. - * configure.in: Added an RCS Id, the copyright, and license. - Do a real path search for perl. - - * libtme/log-prf.c: Changes to silence gcc -Wuninitialized. - * libtme/module.c: Changes to silence gcc -Wuninitialized. - * machine/sun2/sun2-mainbus.c: Changes to silence gcc -Wuninitialized. + * configure.in: Fixed a bug where StaticGray, StaticColor, and + PseudoColor visuals would be considered indexed. This would cause the + translation functions to incorrectly try to map intensities into pixel + subfields. + +Sat May 14 22:28:29 2005 Matthew Fredette + + * TODO: Updated. + + * acinclude.m4 (AC_CHECK_FUNC_LONG): Added. + + * configure.in: Now check for sys/bswap.h, bswap16(), and bswap32(). + Now check for isinff(). + Instead of taking a set of host display formats in the environment + variable TME_DISPLAYS, now take the configure argument + --with-tme-host-displays. When debugging is disabled, to get best + performance now define macros that preprocess out a lot of debugging + code. Debugging now defaults to disabled. + + * generic/float.c [!HAVE_ISINFF] (isinff): Added. + + * host/gtk/gtk-screen.c (_tme_gtk_screen_mode_change): Now initially + try to allocate new colors. For any colors that fail, try to allocate + best-match colors. Warn if even best-match colors could not be + allocated. + + * ic/ieee754/ieee754-misc.c: Declare more single- and double-precision + constants. + + * tme/common.h: Now include for the byteswapping + functions. When the host is big-endian, try to use bswap16() and + bswap32() for byteswapping functions, otherwise define them. Now + define little-endian conversion functions on big-endian hosts. + + * tme/generic/float.h: Corrected some HAVE_ macros to _TME_HAVE_ + macros. Now include float.h and limits.h. Added a prototype for + isinff(). + +Sat May 14 19:18:42 2005 Matthew Fredette + + * generic/fb-xlat-auto.sh: Fixed a bug in the initialization of + dst_masks_default, that was causing incorrect halving translation on + PseudoColor hosts. + + * host/gtk/gtk-keyboard.c (_tme_gtk_keyboard_lookup): Fixed a bug in + the warning message when a keysym can't be generated by the host + keyboard. + + * ic/ieee754/Makefile.am: Added -lm to libtme_ieee754_la_LDFLAGS. + + * ic/m68k/m68k-opmap-dump.c: + * machine/sun3/sun3-carrera-eeprom.txt: Added. + + * ic/m68k/m68k-opmap-make.pl: The previous opcode map functions were + too big (or complicated?) to be compiled in a reasonable amount of + time on slower machines. Now compress the functions down by + initializing similar roots close to each other, and in groups whenever + possible. This cuts down on the amount of params[] refilling and + function calls, and decreases the size of m68k-opmap.c by almost half. + + * machine/sun3/Makefile.am: Added sun3-carrera-eeprom.txt to + examples_DATA. + + * serial/serial-kb.c (_tme_serial_kb_connection_make): When a keyboard + macro can't be parsed, instead of aborting, just log a complaint. + +Sat May 14 01:43:33 2005 Matthew Fredette + + * acinclude.m4 (AC_CHECK_FLOAT_FORMAT): Fixed a tme_uint16_t, which + was causing failures on big-endian systems. + + * ic/ieee754/softfloat-tme.c: Swapped some declarations that were with + the wrong comments. + + * tme/ic/ieee754.h: Declare more single- and double-precision + constants. + +Wed May 11 00:15:42 2005 Matthew Fredette + + * dist/softfloat/softfloat/bits64/softfloat-macros (add192): + (sub192): Fixed some gcc3 signed/unsigned comparison warnings. + + * dist/softfloat/softfloat/bits64/softfloat.c (roundAndPackFloatx80): + Fixed a gcc3 signed/unsigned comparison warning. + + * ic/i825x6.c (_tme_i825x6_callout_ru): + (_tme_i825x6_callout): Fixed some gcc3 signed/unsigned comparison + warnings. + + * ic/ieee754/ieee754-misc-auto.sh: Fixed a gcc3 signed/unsigned + comparison warning. + + * machine/sun3/sun3-mainbus.c (_tme_sun3_bus_intack): Make signal + unsigned, to fix gcc3 signed/unsigned comparison warnings. + + * tme/generic/float.h (tme_float_is_negative): Fixed all conditional + arms to be conditional expressions, to keep the type of the whole + expression int. + +Tue May 10 11:15:26 2005 Matthew Fredette + + * machine/sun3/SUN3-CARRERA: Disable obie0 by default. + +Tue May 10 00:38:19 2005 Matthew Fredette + + * host/gtk/gtk-keyboard.c (_tme_gtk_keyboard_attach): Connect the + key_press and key_release events with gtk_signal_connect_after, so we + can stop the event from propagating up to parents, where a GtkWindow + parent will do strange things with arrow key presses. + + * ic/isil7170.c (_tme_isil7170_bus_cycle): Fixed an off-by-one bug in + the month register. + + * machine/sun3/SUN3-CARRERA: Disable the serial console by default. + +Mon May 09 02:01:02 2005 Matthew Fredette + + * machine/sun/sun-cgtwo.c (_tme_suncg2_bus_cycle_regs): Wrap the + rasterop register log in #ifndef TME_NO_LOG, since the rasterop + register names array doesn't exist otherwise. + +Mon May 09 01:59:03 2005 Matthew Fredette + + * generic/ethernet.c (tme_ethernet_chunks_copy): Fixed a bug where the + size of the destination buffer would get loaded with the size of the + source buffer. + + * generic/fb.c (_tme_fb_xlat_colors_get_set): Fixed a bug where the + number of colors allocated wasn't being saved. + + * ic/i825x6.c (_tme_i825x6_fbl_refill): Now tolerate a Receive Buffer + with zero size. + (_tme_i825x6_callout_ru): Initialize rbd_size early, since its value + is decreased early when a fake receive buffer is made from the RFD + Ethernet header space. + +Sat Apr 30 15:22:25 2005 Matthew Fredette + + * configure.in: Now determine the default display depth with xwininfo + -root, assuming that the root window is at the default depth. If the + depth is greater than one, also determine the visual class and any + subfield masks, and include this information in the destination image + key. Add support for color framebuffer images on the sun3. + + * generic/bus.c (_tme_bus_cycle_xfer_resp_least_lane): + (tme_bus_cycle_xfer_reg): Added. + + * generic/fb-xlat-auto.sh: Added support for color source and + destination images. + + * generic/fb.c (tme_fb_xlat_best): + (tme_fb_xlat_is_optimal): Now consider source image class, mapping + type, mapping size, and subfield masks, and destination image mapping + type and subfield masks. + (_tme_fb_xlat_colors_get_set): + (tme_fb_xlat_colors_get): + (tme_fb_xlat_colors_set): Added. + + * host/gtk/gtk-display.h: Removed the monochrome invert mask from + struct tme_gtk_display. Inversion is now specified by the + framebuffer. + + * host/gtk/gtk-screen.c (_tme_gtk_screen_mode_change): Added color + support. Now we determine the destination image class, mapping, and + any subfield masks. We choose a translation function based on image + classes, mappings, and subfield masks, and allocate colors on behalf + of the translation function. + + * ic/m68k/m68020.c (_tme_m68020_exception): Fixed a bug where a 32-bit + fetch wasn't marking the B stage as faulted. + + * ic/m68k/m68k-execute.c (_TME_M68K_EXECUTE_NAME): Fixed a bug with + the instruction buffer. Before, when the slow executor would take a + fault in the middle of a 32-bit instruction fetch, the successfully + fetched first 16 bits wouldn't get put in the instruction buffer by + the fault processing, because a fetch was only accounted for once it + fully succeeded. When the fetch was resumed, the first 16 bits was + lost. Now, a slow executor fetch is accounted for before it begins, + which guarantees that any partially fetched instruction makes it into + the instruction buffer. + + * ic/m68k/m68k-misc-auto.sh: Now, we update the instruction buffer + fetch total and sizes values before we do the actual fetch, because we + may transfer a few bytes and then fault. Without this, those few + bytes wouldn't get saved in the exception stack frame by + tme_m68k_insn_buffer_xfer(), because it wouldn't know about the fetch. + Later, when the instruction would be resumed, tme_m68k_fetch32() won't + refetch them, because it knows they've already been fetched and thinks + they're still in the instruction buffer. + + * machine/sun/Makefile.am: Now build sun-cgtwo.c for + libtme_machine_sun.la. + + * machine/sun/sun-bwtwo.c (_tme_sunbw2_connections_new): Fill in the + new parts of the struct tme_fb_connection. + (tme_sun_bwtwo): Fixed a bug in the argument processing. + + * machine/sun/sun-cgtwo.c: Added. + + * machine/sun2/SUN2-MULTIBUS: Since the Emulex emulation changed + slightly, make sure that NetBSD will still probe this as an Emulex. + + * machine/sun3/SUN3-CARRERA: Added support for the cgthree board. + + * machine/sun3/sun3-mainbus.c (tme_machine_sun3,cgtwo): Added. + + * machine/sun3/sun3-mmu.c (_tme_sun3_tlb_fill_mmu): Temporarily work + around a bug in NetBSD/sun3 where the cgtwo is mapped at the wrong + physical address. + + * tme/generic/bus.h: Added a prototype for tme_bus_cycle_xfer_reg(). + + * tme/generic/fb.h: Added macros for the different image classes, + mapping types, and default subfield masks. Also added macros for the + "any" subfield mask, and for the mask of the maximum index value. + Expanded struct tme_fb_connection and struct tme_fb_xlat to include + image class, subfield masks, and mapping information. Added + prototypes for tme_fb_xlat_colors_get() and tme_fb_xlat_colors_set(). + + * tme/machine/sun.h: Added a prototype for tme_sun_cgtwo(). + +Wed Mar 23 12:42:56 2005 Matthew Fredette + + * ic/ieee754/ieee754-ops-auto.sh: Now emit ops for log, log10, and + exp. + + * ic/m68k/m68010.c: TME_ELEMENT_X_NEW_DECL(tme_ic_,m68k,m68010): Now + call tme_m68k_opcodes_init_m68010() to initialize the opcode table. + + * ic/m68k/m68020.c: TME_ELEMENT_X_NEW_DECL(tme_ic_,m68k,m68020): Now + call tme_m68k_opcodes_init_m68020() to initialize the opcode table. + + * ic/m68k/m6888x.c (tme_m68k_fbcc): Fixed a bug in calculating the + target PC; the displacement is always added to the original PC plus + two. Now always take a 32-bit displacement as a proper operand. + + * ic/m68k/m68k-execute.c: Simplified how instructions are decoded and + executed. Now, the first 16-bit instruction word is used to directly + index an array of 32-bit integers, each of which gives the + instruction's function number, the function's arguments, immediate + fetching and EA calculation information, and a single + special-operation escape bit. Only two types of immediate fetches are + supported: a 16-bit fetch, sign-extended to 32 bits, and a 32-bit + fetch. All of this speeds things up dramatically. + [_TME_M68K_STATS]: Keep statistics on executed instructions. + + * ic/m68k/m68k-impl.h: Removed TME_M68K_SIZE_SUBMAP_X, + TME_M68K_SIZE_16U8, TME_M68K_SIZE_16S32, TME_M68K_OPNUM_SUBMAP_X, + TME_M68K_OPNUM_UNDEF, and the list of special opcodes, all of which + were used only in the old opcode maps. + Added macros for the decoded instruction parameters in the new opcode + maps. + Removed the data structures used by the old opcode maps. The EA + register is now a proper IC register. Added statistics to struct + tme_m68k. Removed the declarations of the small immediate arrays. + The small immediates are now proper IC registers. Added declarations + of the different CPUs' opcode maps and their initialization functions, + and the instruction function array. Added declarations for + tme_m68k_bccl(), tme_m68k_bsrl(), tme_m68k_divl() and tme_m68k_mull(). + + * ic/m68k/m68k-insns.c (tme_m68k_bccl): + (tme_m68k_bsrl): + (tme_m68k_link): + (tme_m68k_rtd): Now that the opcode map supports 16-bit immediates + sign-extended to 32 bits, always take a proper 32-bit operand. + + * ic/m68k/m68k-iset.txt: Now that the opcode map supports 16-bit + immediates sign-extended to 32 bits again, make rtd and the 16-bit + versions of link, bsr, bcc, and fbcc take this kind of immediate. + + * ic/m68k/m68k-misc.c (tme_m68k_exception): Now log a message when a + double fault causes a processor halt. + + * ic/m68k/m68k-opmap-make.pl: The initial rewrite of the opcode map + generation resulted in an enormous opcode map source file, and, + because the instruction function pointers were in the map entries + directly, an opcode map array that wasn't 64-bit friendly. + Now, the instruction function pointers are in a small separate array + which is indexed by eight bits in the 32-bit opcode parameter + information, which is all that remains in the opcode map. To make + room for these eight bits, the first EA mode and reg fields are not + stored (and are instead are swapped in by the instruction executer + after the instruction function has been fetched), and the special + operation field has been reduced to a single bit. To shrink the + opcode map sources, we take advantage of the fact that each of the + 1024 aligned sets of 64 opcodes (a "root") uses one of a small number + of patterns to initialize itself (for m68000 through m68020, there are + only 37 such patterns), and we generate a function to initialize the + parameters in that pattern. Also, each CPU uses the previous CPU's + opcode initialization function to initialize the bulk of its opcode + map, making changes only as needed. + All of this has reduced the size of the opcode map source file + dramatically. + Also, support for 16-bit immediates, sign-extended to 32 bits, has + been added again. + +Tue Mar 15 02:56:58 2005 Matthew Fredette + + * ic/m68k/m6888x.c (tme_m68k_fbcc): All 16-bit immediates are now + sign-extended to 32-bits in a fixed immediate register. + + * ic/m68k/m68k-insns.c (_tme_m68k_bcc): + (tme_m68k_bccl): + (_tme_m68k_bsr): + (tme_m68k_bsrl): Added. + (tme_m68k_bcc): Now just use _tme_m68k_bcc. + (tme_m68k_bsr): Now just use _tme_m68k_bsr. + (tme_m68k_link): Now handle the 16-bit variant explicitly. + (tme_m68k_rtd): Now handle our 16-bit argument correctly. + (tme_m68k_mull): + (tme_m68k_divl): Added. + +Thu Mar 10 13:29:42 2005 Matthew Fredette + + * ic/m68k/m68010.c: Now define _TME_M68K_EXECUTE_OPMAP to + tme_m68k_opcodes_m68010 when compiling the executors. + TME_ELEMENT_X_NEW_DECL(tme_ic_,m68k,m68010): No longer call + _tme_m68010_decoder_map_init(). + + * ic/m68k/m68020.c: Now define _TME_M68K_EXECUTE_OPMAP to + tme_m68k_opcodes_m68020 when compiling the executors. + TME_ELEMENT_X_NEW_DECL(tme_ic_,m68k,m68020): No longer call + _tme_m68020_decoder_map_init(). + + * ic/m68k/m68k-insns-auto.sh: cas2 now gets its specop2 as a 16-bit + operand. moves now must do its own memory cycles, and EA + postincrement and predecrement. + Now track memory statistics in the memory functions. + + * ic/m68k/m68k-iset.txt: Many simplifications, and some expansions, to + enable faster instruction dispatching. Eliminated all specops except + for specop16 and fpgen, eliminated the #16S32 immediate type (all + 16-bit immediates are now sign-expanded to 32 bits), and bcc and bsr + are now expanded (multiple iset lines may expand to the same pattern, + with the first one winning, but also with a system of * understood by + m68k-opmap-make.pl to count the correct number of duplicates). + + * ic/m68k/m68k-misc-auto.sh: Now define a 96-bit register for + immediates. Now define registers for the constants zero through + eight. + + * ic/m68k/m68k-misc.c: Removed the small immediates arrays. + (_tme_m68k_connection_break): Now return zero, to silence a warning + (?). + (tme_m68k_new): Increased the instruction burst size to 200. This + dramatically improves performance. Now initialize the small + immediates. + (tme_m68k_redispatch): Count redispatch statistics. + (tme_m68k_tlb_fill): Count TLB fill statistics. + (tme_m68k_dump): No longer display the specop2 value. + + * ic/m68k/m68k-opmap-make.pl (operand_final): Removed. + + * ic/m68k/m68k-opmap-make.pl: Rewritten to support much faster + dispatching of instructions. Now each CPU gets an independent + 64K-entry array, indexed by first instruction word, that yields a + function pointer and 32 bits of parameter information. This + information includes struct tme_m68k-relative offsets for the + function's operands, EA and immediate fetching information, and specop + information. + +Fri Feb 18 04:12:55 2005 Matthew Fredette + + * bus/multibus/sun-mie.c (_tme_sun_mie_tlb_set_allocate): Atomic + variable changes. + (_tme_sun_mie_tlb_fill): Don't invalidate a TLB entry if it happens to + be the same as the one we're filling. + + * bus/multibus/sun-sc.c (_tme_sun_sc_bus_cycle_dma): Fixed a bug where + we would do 16-bit accesses in 8-bit mode. + (_tme_sun_sc_intack): Added. + (_tme_sun_sc_cycle_new): + (_tme_sun_sc_callout): + (_tme_sun_sc_bus_cycle_data_reg): + (_tme_sun_sc_bus_cycle_icr): + (_tme_sun_sc_scsi_cycle): Mostly mechanical changes to support the new + events/actions SCSI bus interface. + (_tme_sun_sc_connection_make_scsi): No longer get any predefined SCSI + sequences. + (_tme_sun_sc_connections_new): No longer provide a predefined SCSI + sequence function. + (tme_bus_multibus,sun_sc): Added support for the "vme" argument. + + * generic/fb-xlat-auto.sh: Fixed a serious bug where we would decide + that FIFOs are always aligned, even when the FIFO's bits per pixel + value isn't known at compile time. + Fixed a bug where xlat_run would get decremented during every loop + iteration, instead of only after every translated source 32-bit word. + When the loop isn't unrolled for source pixels, this causes xlat_run + to go negative too early, which can stop translation. + + * generic/scsi.c (tme_scsi_connection_score): No longer score based on + a predefined SCSI sequence function. + + * ic/m68k/Makefile.am: Now build the m6888x support, which depends on + the ieee754 support. + + * ic/m68k/m68k-impl.h: + * tme/ic/m68k.h: Added m6888x support. + + * ic/m68k/m68k-iset.txt: Added the floating-point instructions. + + * ic/m68k/m68k-misc.c (_tme_m6888x_enable): Added. + (_tme_m68k_connection_score): A bus must not provide an m6888x enable + function. + (_tme_m68k_connections_new): A m68k provides an m6888x enable + function. + (tme_m68k_new): Now pass FPU arguments to tme_m68k_fpu_new(), and + display the FPU usage with tme_m68k_fpu_usage(). + (tme_m68k_do_reset): Reset any FPU. + + * machine/sun2/SUN2-MULTIBUS: Make the bpf attachment for ie0 delay + packets slightly. This works around a sleep/wakeup race condition in + the NetBSD kernel RARP code. + Changed the type of the bwtwo from obmem to multibus, since the bwtwo + implementation is now common to all sun machines. + + * machine/sun3/SUN3-CARRERA: Now define an unknown-compliance m68881. + Now use the revision 3.0 ROM. + Increased the size of the VME bus to the full 4GB. Commented out the + sc0 attachment, in favor of the new si0 attachment. + To support stock NetBSD 1.6*, make the Emulex tape respond to INQUIRY + commands in a normal way. + + * machine/sun3/sun3-control.c (_tme_sun3_control_cycle_handler): Call + out changes to the FPU and DVMA enable bits. Silently ignore an + attempt to enable the Sun FPA. + + * machine/sun3/sun3-impl.h: Now track the active DVMA TLBs, so that + they can be invalidated when DVMA is enabled or disabled. Atomic + variable fixes, and a prototype for _tme_sun3_mmu_sdvma_change(). + + * machine/sun3/sun3-mmu.c (_tme_sun3_cycle_dummy): + (_tme_sun3_sdvma_disabled): + (_tme_sun3_mmu_sdvma_change): Added. + (_tme_sun3_bus_tlb_fill): Now track TLB entries filled for DVMA space. + Entries that are filled while DVMA is disabled generate a VME bus + fault. For now, bus cycles to unmapped DVMA addresses are ignored. + (_tme_sun3_tlb_fill_mmu): Apparently the magic obio mapping of the + PROM works over a PROM-sized region starting at 0x100000. Made some + changes to silence -Wuninitialized. + (_tme_sun3_mmu_tlb_set_allocate): Atomic variable changes. + + * scsi/scsi-bus.c: Replaced the idea of a SCSI sequence with the much + simpler idea of a bus agent waiting for one or more SCSI events to + happen, then taking one or more SCSI actions. + (_tme_scsi_bus_callout): Now call out the events triggered and actions + taken to the connection. + (_tme_scsi_bus_cycle): Now take the events to wait on and the actions + to take from the connection. A connection waits until one of its + events triggers, then some part of its actions are taken. There is + now support for half and full SCSI bus arbitration, and reselection. + (_tme_scsi_bus_sequence_get): Removed. + (_tme_scsi_bus_connection_score): + (_tme_scsi_bus_connections_new): We can't provide a predefined + sequence function any more, or score a connection based on one. + + * scsi/scsi-device.c (_tme_scsi_device_callout): + (_tme_scsi_device_cycle): More or less mechanical changes to support + the new events/actions SCSI bus interface. Fixed a bug where we would + go past the end of the message dispatch array for IDENTIFY messages. + (tme_scsi_device_connections_new): Removed the predefined SCSI + sequence member assignment. + + * scsi/scsi-tape.c (tme_scsi_tape_cdb_inquiry): It looks like + nonexistent LUNs are reported as "unsupported", and not "not present". + Now identify as a SCSI-1 device, and be sure not to return more data + than the initiator requested. + + * tme/common.h: Now declare _tme_volatile. + Added some missing parentheses to _TME_FIELD_DEPOSIT(). Fixed a bug + in the definition of the tme_value64_uint32s[] member of union + tme_value64. + Added definitions for tme_value64_imul() and tme_value64_idiv(). + + * tme/generic/Makefile.am: Now install float.h. + + * tme/generic/bus.h: Now define TME_BUS_SIGNAL_DRQ and + TME_BUS_SIGNAL_DACK. + + * tme/generic/scsi.h: Now define TME_SCSI_ID_SELECTED() and + TME_SCSI_ID_RESELECTED(), to determine if an ID is being selected or + reselected. Replaced the idea of a SCSI sequence with the much + simpler idea of a bus agent waiting for one or more SCSI events to + happen, then taking one or more SCSI actions. + + * tme/ic/Makefile.am: Now install i825x6.h and ieee754.h. + + * tme/machine/sun.h: Added a prototype for tme_sun_si(). + + * tme/scsi/scsi-device.h: Removed the old predefined SCSI sequences + from struct scsi_device. + + * tme/scsi/scsi-msg.h: Now define TME_SCSI_MSG_IDENTIFY_LUN_MASK, for + getting the LUN out of an IDENTIFY message. + + * tmesh/tmesh-input.y: Now define YYMAXDEPTH, to silence -Wundef. + +Thu Feb 17 13:42:44 2005 Matthew Fredette + + * Makefile.am: Added tools/ to SUBDIRS, and dist/ to EXTRA_DIST. + Added a dist-hook target to clean the CVS directories out of dist/. + + * acinclude.m4 (AC_CHECK_FLOAT_FORMAT): + (AC_CHECK_FLOAT_LIMITS): Added. + + * configure.in: Bumped version to 0.4. + Now check for limits.h and float.h. Check for volatile, float, + double, and long double, and the signal handler type. + Added ieee754 and ncr5380 to the list of sun3 ICs. When using gcc, + now use -Wundef when compiling with warnings, and set the no strict + aliasing flag. Add the floating point format configuration to + tmeconfig.h. + + * generic/Makefile.am: Now build float.c and float-auto.c, and include + float-auto.sh and float-auto.c in the distribution. + + * generic/bus-el.c generic/bus.c machine/sun/sun-mmu.c + machine/sun/sun-obie.c machine/sun2/sun2-impl.h + machine/sun2/sun2-mmu.c tme/atomics.h tme/generic/bus.h + tme/machine/sun.h: + + Cleaned up atomic variables. Now atomic variables declared with + TME_ATOMIC and TME_ATOMIC_POINTER_TYPE are volatile. To do this + right, TME_ATOMIC_POINTER_TYPE changed to take just the base type + pointed to, so there has been some fallout. + + * generic/float-auto.sh generic/float.c ic/ncr5380.c + ic/ieee754/Makefile.am ic/ieee754/ieee754-misc-auto.sh + ic/ieee754/ieee754-misc.c ic/ieee754/ieee754-ops-auto.sh + ic/ieee754/ieee754-precision.sh ic/ieee754/softfloat-tme.c + ic/ieee754/softfloat-tme.h ic/m68k/m6888x-auto.sh ic/m68k/m6888x.c + machine/sun/sun-si.c tme/generic/float.h tme/ic/ieee754.h + tools/Makefile.am: + + Added. + + * host/posix/posix-disk.c (tme_host_posix,disk): Only probe for the + block size if the device is a character device. If we have mmap + support, the block size for all devices must be some multiple of the + page size - this fixes a bug where we would try to mmap() + non-page-sized regions at non-page boundaries. + + * ic/Makefile.am: Added ieee754 to the list of distribution + subdirectories. Now build ncr5380.c. + Added i825x6reg.h to the list of i825x6 sources. + + * ic/m68k/m68020.c (_tme_m68020_exception): + (_tme_m68020_rte): Fixed bugs in the handling of bus fault frames for + instruction fetches. Previously, we would always fault on stage B, + and only on stage C for a 32-bit fetch. This was supposed to be the + other way around. Also, an address error doesn't set a fault bit, + only a rerun bit. + + * ic/m68k/m68k-execute.c (_TME_M68K_EXECUTE_NAME): Fixed some bugs + caught by gcc -Wuninitialized. + + * ic/m68k/m68k-opmap-make.pl: Fixed a bug where the illegal opcode + wouldn't get the 'illegal' specop. + + * libtme/threads-sjlj.c [HAVE_GTK]: Define G_ENABLE_DEBUG if it isn't + defined, to silence -Wundef. + + * machine/sun/sun-mmu.c (tme_sun_mmu_tlb_fill): Fixed a serious bug + where any page marked as modified was given out as writable, even if + it wasn't marked as writable. SunOS likes to set page table entries + that are modified, but not writable, and this bug was preventing + proper copy-on-write behavior. + + * machine/sun2/Makefile.am: No longer build sun2-bwtwo.c. + + * machine/sun2/sun2-bwtwo.c: Removed. + + * machine/sun2/sun2-mainbus.c (_tme_sun2_connections_new): Fixed bugs + in forming the list of free buses. + (tme_machine_sun2,zs): Now use the standard Sun z8530 socket + definition. + (tme_machine_sun2,bwtwo): Added. + + * machine/sun3/sun3-mainbus.c (_tme_sun3_bus_signal): Apparently, + SunOS likes to set both the level 5 and level 7 clock interrupt enable + bits. The level 5 bit seems to take precedence. + (_tme_sun3_connection_score): Insist on a m68020 or better. + (tme_machine_sun3,si): Added. + + * scsi/emulexmt02.c (_tme_emulexmt02_cdb_request_sense): Fixed a bug + where we weren't putting the Emulex error code in the sense. + (_tme_emulexmt02_cdb_inquiry): Added a hack to make this tape usable + to install SunOS 4.1.1. + (tme_scsi_tape_emulexmt02_init): If the user specified a vendor of + EMULEX, use the normal INQUIRY CDB handling, instead of returning the + useless Emulex INQUIRY data. Now return an illegal command for a + RESERVE CDB. + +Thu Feb 17 02:14:57 2005 Matthew Fredette + + * ic/m68k/m68k-insns.c (tme_m68k_bfffo): Fixed a bug where we were + using ffs(), which finds the least significant bit set, and not the + most significant bit set. Now find the most significant bit set. + + * ic/m68k/m68k-verify.c (_tme_m68k_verify_end): Added better support + for verifying bitfield instructions. Don't try to verify + floating-point instructions. + (tme_m68k_verify_end_branch): Now leave the m68k structure unchanged. + + * machine/sun/Makefile.am: Added sun-fb.h and sun-si.c to the sources + list. Added tme-sun-eeprom.pl to the distribution. + +Wed Jan 26 13:13:29 2005 Matthew Fredette + + * host/gtk/gtk-display.h: If G_ENABLE_DEBUG isn't defined, define it + to zero. Some GTK installations apparently require this. + + * host/gtk/gtk-screen.c (_tme_gtk_screen_mode_change): Allocate a + GdkImage with the extra scanlines needed to hold the overtranslation + that the automatically generated functions do. + + * ic/isil7170.c: Include and not to get struct + tm. + + * ic/m68k/m68020.c (_tme_m68020_exception): Store the memory Z buffer. + (_tme_m68020_rte): Restore the memory Z buffer. + + * libtme/module.c (tme_module_open): Fixed a bug where were freeing + the tokens array twice. + + * scsi/scsi-msg.c (tme_scsi_device_msg_identify): Now set the + addressed LUN. + +Sun Jan 16 01:24:37 2005 Matthew Fredette + + * ic/m68k/m68k-execute.c (_TME_M68K_EXECUTE_NAME): Added support for + executing floating-point general instructions. + +Fri Jan 14 12:27:41 2005 Matthew Fredette + + * dist/softfloat/processors/386-GCC.h + dist/softfloat/processors/SPARC-GCC.h + dist/softfloat/softfloat/README.txt + dist/softfloat/softfloat/SoftFloat-history.txt + dist/softfloat/softfloat/SoftFloat-source.txt + dist/softfloat/softfloat/SoftFloat.txt + dist/softfloat/softfloat/timesoftfloat.txt + dist/softfloat/softfloat/bits32/softfloat-macros + dist/softfloat/softfloat/bits32/softfloat.c + dist/softfloat/softfloat/bits32/timesoftfloat.c + dist/softfloat/softfloat/bits32/386-Win32-GCC/Makefile + dist/softfloat/softfloat/bits32/386-Win32-GCC/milieu.h + dist/softfloat/softfloat/bits32/386-Win32-GCC/softfloat-specialize + dist/softfloat/softfloat/bits32/386-Win32-GCC/softfloat.h + dist/softfloat/softfloat/bits32/SPARC-Solaris-GCC/Makefile + dist/softfloat/softfloat/bits32/SPARC-Solaris-GCC/milieu.h + dist/softfloat/softfloat/bits32/SPARC-Solaris-GCC/softfloat-specialize + dist/softfloat/softfloat/bits32/SPARC-Solaris-GCC/softfloat.h + dist/softfloat/softfloat/bits32/templates/Makefile + dist/softfloat/softfloat/bits32/templates/milieu.h + dist/softfloat/softfloat/bits32/templates/softfloat-specialize + dist/softfloat/softfloat/bits32/templates/softfloat.h + dist/softfloat/softfloat/bits64/softfloat-macros + dist/softfloat/softfloat/bits64/softfloat.c + dist/softfloat/softfloat/bits64/timesoftfloat.c + dist/softfloat/softfloat/bits64/386-Win32-GCC/Makefile + dist/softfloat/softfloat/bits64/386-Win32-GCC/milieu.h + dist/softfloat/softfloat/bits64/386-Win32-GCC/softfloat-specialize + dist/softfloat/softfloat/bits64/386-Win32-GCC/softfloat.h + dist/softfloat/softfloat/bits64/SPARC-Solaris-GCC/Makefile + dist/softfloat/softfloat/bits64/SPARC-Solaris-GCC/milieu.h + dist/softfloat/softfloat/bits64/SPARC-Solaris-GCC/softfloat-specialize + dist/softfloat/softfloat/bits64/SPARC-Solaris-GCC/softfloat.h + dist/softfloat/softfloat/bits64/templates/Makefile + dist/softfloat/softfloat/bits64/templates/milieu.h + dist/softfloat/softfloat/bits64/templates/softfloat-specialize + dist/softfloat/softfloat/bits64/templates/softfloat.h: + + Import of SoftFloat Release 2b. + + * dist/softfloat/softfloat/bits32/softfloat.c: + * dist/softfloat/softfloat/bits64/softfloat.c: Added the tme/softfloat + glue and removed some unused variables. + +Fri Jan 14 11:44:18 2005 Matthew Fredette + + * machine/sun/tme-sun-eeprom.pl: Make selftest-#megs default to zero. + * tools/tme-binary-struct.pl.in: When standard input is a terminal, we + don't read any input. + +Thu Aug 19 12:27:24 2004 Matthew Fredette + + * TODO: Updated. + + * acinclude.m4 (AC_CHECK_SHIFTSIGNED): Added. + + * configure.in: Use AC_CHECK_SHIFTSIGNED() to see if right shifts of + signed integrals preserve sign. + Added support for sun3 systems. + + * generic/bus-el.c (_tme_bus_intack): If a device doesn't acknowledge + interrupts, return any user-specified vector on the bus connection + before falling back to the undefined vector. + (_tme_bus_connections_new): Now allow the user to specify a vector on + the bus connection. + (tme_generic,bus): Added a hack that allows the user to specify a 4GB + bus on a 32-bit system. + + * ic/Makefile.am: Now build tme_ic_isil7170.la. + + * ic/i825x6.c (_tme_i825x6_callout_cu): Added a missing break + statement to a switch arm. + + * ic/isil7170.c ic/m68k/m68020.c machine/sun/sun-bwtwo.c + machine/sun/sun-fb.c machine/sun/sun-fb.h machine/sun/sun-obie.c + machine/sun/tme-sun-eeprom.pl machine/sun3/Makefile.am + machine/sun3/SUN3-CARRERA machine/sun3/sun3-control.c + machine/sun3/sun3-impl.h machine/sun3/sun3-mainbus.c + machine/sun3/sun3-mmu.c tme/ic/isil7170.h + tools/tme-binary-struct.pl.in: + + Added. + + * ic/m68k/Makefile.am: Removed an inadvertent m68k-verify.c from + tme_ic_m68k_la_SOURCES. + + * ic/m68k/Makefile.am: Now compile m68020.c. + + * ic/m68k/m68k-misc.c (tme_m68000_exception_process): + (tme_m68020_exception_process): For illegal instruction exceptions, + now use the line A or line F vector as appropriate. + (tme_m68k_rte_start): Added some TME_M68K_SEQUENCE_RESTARTING + protection. + + * libtme/threads-sjlj.c: Removed the unused + tme_sjlj_thread_cond_notified field from the thread structure. + (tme_sjlj_thread_create): Initialize the thread's linkage in the + timeout list. + + * machine/Makefile.am: Added the sun3 directory to DIST_SUBDIRS. + + * machine/sun/Makefile.am: Now build sun-bwtwo.c, sun-fb.c, and + sun-obie.c for libtme_machine_sun.la. + Now make the tme-sun-eeprom script. + + * machine/sun/sun-keyboards.txt: Added a map for the type 3 keyboard. + + * machine/sun/sun-mmu.c (tme_sun_mmu_tlb_fill): Don't invalidate the + old TLB entry if it happens to be the same one we're filling. + + * tme/common.h: Now define TME_FIELD_MASK_EXTRACTU and the internal + _TME_FIELD_MASK_FACTOR, for extracting field values using a mask. + + * tme/generic/bus.h: Now define TME_BUS_CYCLE_SYNCHRONOUS_EVENT. Now + track a single interrupt vector for a connection, for those + connections that only use a single, nonprogrammable vector. + + * tme/ic/Makefile.am: Now install isil7170.h. + + * tme/machine/sun.h: To allow for more code sharing, now define + TME_SUN_Z8530_SIZE and TME_SUN_Z8530_SOCKET_INIT. Added prototypes + for tme_sun_obie() and tme_sun_bwtwo(). + +Wed Aug 11 12:30:28 2004 Matthew Fredette + + * ic/m68k/m68010.c: Removed GROUPn_ from the TME_M68K_EXCEPTION_ macro + names, since those group numbers applied to only the 68000 and 68010. + Also added the new TME_M68K_VECTOR_ macros. + + * ic/m68k/m68k-execute.c (_TME_M68K_EXECUTE_NAME): Fixed problems with + the way that tracing is handled, to enable support for 68020 tracing + and its new trace exception frame format. Fixed a bug in the code + that detects a 32-bit branch. Fixed a bug in decoding the divul and + mulul extension words. Added missing declarations for some variables + used in 68020 effective address calculation. + + * ic/m68k/m68k-impl.h: Replaced TME_M68K_FLAG_T with TME_M68K_FLAG_T0 + and TME_M68K_FLAG_T1, and use them wherever possible. Removed the + GROUPn_ from the TME_M68K_EXCEPTION_ macros, since the original group + numbers were specific to the 68000 and 68010. Added more exception + frame format identifier macros. Added new macros for the exception + vectors. + (TME_M68K_INSN_BRANCH): + (TME_M68K_INSN_CHANGE_SR): Improved tracing support. + + * ic/m68k/m68k-insns-auto.sh: The old asr expansion (which was the + same as the lsr expansion, but with a signed operand and result) had + bugs and also required that right shifts of a signed operand be + arithmetic. Added a new expansion that fixes these problems. + Removed the _GROUPn from the TME_M68K_EXCEPTION_ macro names, since + the group numbers were specific to the 68000 and 68010. Also added + the new TME_M68K_VECTOR_ macros. + In the bus-cycle functions, recognize the + TME_BUS_CYCLE_SYNCHRONOUS_EVENT pseudo-error, and make it force the + executer to check external events before executing the next + instruction. + + * ic/m68k/m68k-insns.c: Removed the _GROUPn from the + TME_M68K_EXCEPTION_ macro names, since the group numbers were specific + to the 68000 and 68010. Also added the new TME_M68K_VECTOR_ macros. + Where applicable, store the current PC as the last PC before setting + the next PC as the current PC. This supports format 2 exception + frames, which stack the address of the instruction that caused the + exception. + (tme_m68k_movec): Added support for the 68020 control registers. + + * ic/m68k/m68k-misc-auto.sh: Create registers for the next program + counter, the 68020 cacr and caar, and the always-zero register. + + * ic/m68k/m68k-misc.c: Removed the _GROUPn from the + TME_M68K_EXCEPTION_ macro names, since the group numbers were specific + to the 68000 and 68010. Also added the new TME_M68K_VECTOR_ macros. + (_tme_m68k_bus_interrupt): + (tme_m68k_external_check): Implement a system that prevents NMI from + being repeatedly accepted. If the interrupt priority mask is already + seven, only accept an NMI on a transition from deasserted to asserted. + (tme_m68k_new): Now set the mask of T bits used by the processor. + (tme_m68k_do_reset): Now clear the E and F bits in the 68020 cacr. + Fixed a bug where we loaded the initial SSP and PC from supervisor + data space instead of the correct supervisor program space. + (tme_m68k_change_sr): Only recognize the M bit on a 68020 or greater, + and fixed bugs in the selection of the correct stack pointer control + register. + (tme_m68k_exception_process): Renamed to tme_m68000_exception_process, + since the grouping and priority it implements are specific to the + 68000 and 68010. + (tme_m68020_exception_process): Added. + (tme_m68k_bitfield_offset): Simplified the bitfield byte offset + calculation for negative bit offsets. + (tme_m68k_bitfield_width): Don't bother masking a bitfield width that + was encoded in the instruction; it can't be greater than 31. + (_tme_m68k_bitfield_read): If the bitfield is in memory, note that the + current instruction can fault. Fixed bugs where we assumed that + TME_BIT(32) is zero mod 2^32, when it may be 1 because of shift + limiting, which would cause us to fail to mask and/or sign-extend a + 32-bit bitfield value correctly. + (tme_m68k_bitfield_write_unsigned): Fixed a bug where we wouldn't mask + the value we were given before setting the flags. Fixed bugs where we + assumed that TME_BIT(32) is zero mod 2^32, when it may be 1 because of + shift limiting. If the bitfield is in memory, note that the current + instruction can fault. + + * ic/m68k/m68k-verify.c (tme_m68k_verify_mem_any): Fixed a bug where + we wouldn't properly verify transfers of endianless data. + (tme_m68k_verify_init): Now set up a full 32-bit address space. + (_tme_m68k_verify_end): Store %a7 back in its proper stack pointer + control register, so we can verify changes to the control registers. + Ignore extra verifier memory reads on bitfield instructions; the + verifier bitfield implementation often reads addresses not covered by + the bitfield. + +Mon May 17 11:57:01 2004 Matthew Fredette + + * host/bsd/bsd-bpf.c: Added support for the "delay" option, which + delays all incoming packets for a user-specified number of + microseconds. + (_tme_bsd_bpf_read): Fixed a bug where a TME_ETHERNET_READ_PEEK read + would discard the read packet. + +Fri May 14 00:56:19 2004 Matthew Fredette + + * host/bsd/bsd-bpf.c: Removed the unused tme_bsd_bpf_cond_writer + structure member. + (tme_host_bsd,bpf): Fixed a bug where we weren't initializing the + tme_bsd_bpf_conf_reader condition. + +Tue May 11 12:03:36 2004 Matthew Fredette + + * ic/i825x6.c: Added some logging. + (_tme_i825x6_callout_ru): Don't set the B bit in RFD status fields. + + * libtme/misc.c (_tme_misc_number_parse): Some changes to silence gcc + -Wuninitialized. + +Tue May 04 01:17:27 2004 Matthew Fredette + + * bus/multibus/sun-mie.c: + * ic/i825x6.c: + * ic/i825x6reg.h: + * tme/ic/i825x6.h: Added. + + * machine/sun2/SUN2-MULTIBUS: Added commands to create ie0. + +Fri Apr 30 12:11:36 2004 Matthew Fredette + + * bus/multibus/3c400.c bus/multibus/sun-sc.c generic/bus-el.c + ic/am9513.c ic/z8530.c ic/m68k/m68k-insns.c ic/m68k/m68k-misc.c + machine/sun2/sun2-mainbus.c tme/generic/bus.h: + + Reworked bus signals in several ways: Added the notion of the bus + signals set. Every bus should support multiple device-specific bus + signals sets, added by elements connecting to the bus. This enables + elements to pass these device-specific bus signals to each other. + Now bus signals are only specified as either asserted or negated, + and devices almost never signal edges. For devices that only drive + signals either high or low, you can exclusive-or + TME_BUS_SIGNAL_LEVEL_ASSERTED with either TME_BUS_SIGNAL_LEVEL_HIGH + or TME_BUS_SIGNAL_LEVEL_LOW as appropriate, and provide that to the + device such that the device only needs to exclusive-or that with the + signal level to get the right asserted or negated level. Also + expanded the number of generic bits in a signal value, and improved + the set of macros used to compose and decompose signal values. + + * bus/multibus/sun-sc.c generic/bus.c ic/m68k/m68k-misc.c + machine/sun/sun-mmu.c tme/generic/bus.h: + + Made changes to the TLB protocol, to better support reentrant + devices. Now, a TLB entry passed to a fill function is expected to + be local on the stack, and it "reserves" the real, backing TLB entry + in the device's state. This prevents the case where a device tries + to fill the same backing TLB entry at the same time in two or more + threads. TLB fill functions for devices that need to invalidate + outstanding TLBs always invalidate the backing TLB entry. After a + TLB fill has finished, the caller checks its reservation on the + real, backing TLB, and copies the local TLB back if the reservation + has not been broken. Devices that want to use a TLB entry + immediately after the fill function returns must use the local TLB, + since it cannot have been invalidated yet. Also made fixes to TLB + entry users that avoid rereading fields that are destroyed by + invalidation, after the device has committed to using the TLB entry, + since invalidation can happen at any time. Also made the TLB + tme_bus_tlb_emulator_off_read member const. + + * generic/Makefile.am: + * generic/bus-device.c: + * tme/generic/bus-device.h: Added generic bus-device support for real + bus interfaces and bus-mastering. + +Fri Apr 30 01:46:01 2004 Matthew Fredette + + * TODO: Updated. + + * configure.in: Added the i825x6 to the list of ICs for the sun2. + + * bus/multibus/Makefile.am: Now compile sun-mie.c. + + * ic/Makefile.am: Now build tme_ic_i825x6.la. + + * tme/common.h: Added the TME_X_VERSION versioning macros. Simplified + the definition of TME_RANGES_OVERLAP. + + * tme/generic/ethernet.h: Now define TME_ETHERNET_LENGTH_SIZE and + TME_ETHERNET_HEADER_SIZE. + + * tme/ic/m68k.h: Removed the ancient tme_m68k_tlb_bus_wrlock_on_read + macro. + +Sun Mar 28 23:38:28 2004 Matthew Fredette + + * generic/bus-device-auto.sh: Added. + +Fri Feb 20 12:42:11 2004 Matthew Fredette + + * ic/m68k/m68k-execute.c [_TME_M68K_EXECUTE_FAST]: Make the fast + emulator load pointers const. + +Fri Jan 09 03:42:48 2004 Matthew Fredette + + * generic/bus-el.c ic/am9513.c ic/m68k/m68k-misc.c + machine/sun2/sun2-mainbus.c tme/generic/bus.h: + + Increased the possible number of signal flag bits. + (TME_BUS_SIGNAL_WHICH): Renamed to TME_BUS_SIGNAL_INDEX, all callers + changed, and added a new macro with the same old name that simply + masks off the signal flag bits. + (TME_BUS_SIGNAL_WHICH_INT): Renamed to TME_BUS_SIGNAL_INDEX_INT, all + callers changed. + + * generic/bus.c (tme_bus_addr_parse_any): Now use + tme_misc_unumber_parse_any(). + + * generic/disk.c (tme_disk_dimension_parse): Now use + tme_misc_unumber_parse(). + + * generic/fb-xlat-auto.sh: No longer emit some pixel-doubling code in + optimized translation functions for formats for 24 or more bits per + pixel, because that code would expand to shifts of more than 32 bits, + tripping gcc -Werror. + + * host/gtk/gtk-screen.c (_tme_gtk_gdkimage_bipp): Fixed a bug where + this would fail when bipp > depth, which is common on deep + framebuffers. + + * libtme/misc.c (_tme_misc_number_parse): + (tme_misc_unumber_parse_any): + (tme_misc_number_parse_any): + (tme_misc_unumber_parse): + (tme_misc_number_parse): Added. + + * tme/misc.h: Added prototypes for tme_misc_unumber_parse_any, + tme_misc_number_parse_any, tme_misc_unumber_parse, and + tme_misc_number_parse. + +Wed Oct 29 02:03:26 2003 Matthew Fredette + + * Release 0.2 out. + + * host/gtk/gtk-screen.c: Some quick changes for GTK 2 compatibility. + +Sat Oct 25 17:08:02 2003 Matthew Fredette + + * ic/am9513.c ic/mm58167.c ic/z8530.c ic/z8530reg.h + ic/m68k/m68k-execute.c ic/m68k/m68k-insns.c ic/m68k/m68k-iset.txt + ic/m68k/m68k-misc.c ic/m68k/m68k-verify.c tmesh/tmesh-cmds.c + tmesh/tmesh-util.c: + + RCS Id, header comment, and license sweep. + +Thu Oct 16 03:02:11 2003 Matthew Fredette + + * configure.in: Now check for size_t. + Now make sure that defines BIOCSHDRCMPLT before deciding + that bpf support is present. + + * generic/bus.c generic/keyboard.c host/bsd/bsd-bpf.c + host/bsd/bsd-if.c host/gtk/gtk-display.h host/gtk/gtk-keyboard.c + host/posix/posix-tape.c ic/am9513.c ic/m68k/m68k-impl.h + libtme/log-prf.c machine/sun2/sun2-mmu.c scsi/scsi-cdb.c + scsi/scsi-tape.c serial/kb-sun.c serial/serial-kb.c + serial/serial-ms.c tme/generic/keyboard.h tme/scsi/scsi-device.h + tmesh/tmesh-cmds.c tmesh/tmesh.c: + + Fixed many small bugs caught by the gcc3 -Wall -Wuninitialized. + + * host/posix/posix-disk.c: Fixed various type problems found by gcc3. + + * scsi/acb4000.c (_tme_acb4000_cdb_bad): Fixed a bug where we set the + amount of valid sense to TRUE instead of to a byte count. + + * scsi/scsi-bus.c (_tme_scsi_bus_cycle): Work around an aliasing + warning. + + * tme/common.h: Fixed a bug where tme_value64_set had a conditional + with two different result types. + When included by the implementation, now try to bring in standard + headers to get string and memory function prototypes. Added an + incomplete list of prototypes for when standard headers aren't + available. + +Mon Sep 29 11:42:56 2003 Matthew Fredette + + * generic/fb-xlat-auto.sh: Added many comments, clarified some obscure + code, and fixed a bug where unoptimized halving translators wouldn't + shift the source FIFOs by two pixels when they had to. + +Wed Sep 10 01:49:22 2003 Matthew Fredette + + * generic/fb-xlat-auto.sh: Fixed various bugs when the destination + FIFOs may not be aligned, and when doubling. These bugs were mostly + found by inspection, and the fixes haven't been tested. + +Mon Sep 01 14:58:57 2003 Matthew Fredette + + * configure.in: Changed the version number. + Now only build the bsd host modules on BSD-like systems. + + * generic/keyboard.c (_tme_keyboard_buffer_in0): Now examine any + keycode on the user's event to determine if an earlier press of a + different keysym from the same keycode has actually released. + + * host/gtk/gtk-display.h: Now keep a mapping from keysym to keycode, + for those keysyms that can only be generated by one keycode. + + * host/gtk/gtk-keyboard.c (_tme_gtk_keyboard_x11_new): + (_tme_gtk_keyboard_key_event): + (_tme_gtk_keyboard_new): Now keep a mapping from keysym to keycode, + for those keysyms that can only be generated by one keycode, and add + that keycode to key events. + + * host/posix/posix-tape.c: Some changes to silence gcc + -Wuninitialized. + + * host/posix/posix-tape.c (_tme_posix_tape_xfer1): When we hit the end + of the media, don't try to skip ahead to a nonexistent next segment. + + * libtme/hash.c (_tme_hash_lookup_internal): When the lookup succeeds, + be sure to return the handle the bucket. + + * libtme/log.c: Fixed many of the non-stdarg declarations of the + variable-argument functions. + + * machine/sun2/SUN2-MULTIBUS: Now set a fixed key rate on kbd0, to + work around a bug in NetBSD where only the first of simultaneously + received keycodes will be processed. + + * serial/serial-kb.c (_tme_serial_kb_callout): Cleaned up the code + that translates keyboard events into serial data, and added support + for rate-limiting. + (_tme_serial_kb_th_rate): Added. + (_tme_serial_kb_serial_read): + ((tme_serial_,kb,keyboard): Added support for rate-limiting. + + * serial/serial-kb.h: Added various members to control rate-limiting. + + * tme/generic/keyboard.h: A keyboard event for a keysym can now + include the related keycode. This is for handling the case of a key + release giving a different keysym than the key press did because + modifiers changed in between. + +Sat Aug 23 13:50:34 2003 Matthew Fredette + + * generic/Makefile.am: Be sure to distribute fb-xlat-auto.sh. + * generic/keyboard.c (_tme_keyboard_debug): + (tme_keyboard_buffer_new): Changes to support logging debug messages. + + * host/gtk/Makefile.am: + * serial/Makefile.am: + * tme/generic/Makefile.am: Added some headers that weren't getting + distributed. + + * host/gtk/gtk-keyboard.c (_tme_gtk_keyboard_new): Allow the keyboard + buffer to log messages using our log handle. + + * host/posix/posix-tape.c: Changes to silence various gcc warnings. + + * libtme/module.c: Added a hack to support older installed libltdls + that don't define lt_ptr. + + * libtme/threads-sjlj.c: Fixed uses of struct fd_set. + + * tme/common.h: Now include for the byteswapping + functions. + + * tme/generic/keyboard.h: Users can now give a log handle to the + keyboard buffer, for logging debug messages. + +Fri Aug 22 16:39:30 2003 Matthew Fredette + + * serial/serial-kb.c (tme_serial_,kb,keyboard): Give the element's log + handle to the keyboard buffer, to enable debugging. + +Tue Aug 12 23:00:40 2003 Matthew Fredette + + * machine/sun/Makefile.am: Now install sun-keyboards.txt and + my-sun-macros.txt. + + * machine/sun/my-sun-macros.txt: + * machine/sun/sun-keyboards.txt: Added. + + * machine/sun2/Makefile.am: Removed some old targets and dependencies. + + * machine/sun2/SUN2-MULTIBUS: Reorganized and added more comments. + As-is, this now represents the common case of local disk, no network. + +Fri Aug 08 13:33:45 2003 Matthew Fredette + + * tmesh/tmesh.c (main): Added support for the --noninteractive option. + Fixed a bug where we wouldn't report meaningful file and line number + information on early errors. + +Thu Aug 07 22:14:46 2003 Matthew Fredette + + * bus/multibus/sun-sc.c (_tme_sun_sc_bus_cycle_data_reg): Added. + (_tme_sun_sc_bus_cycle_data): + (_tme_sun_sc_bus_cycle_cmd_stat): Now use + _tme_sun_sc_bus_cycle_data_reg to run the bus cycle. + (_tme_sun_sc_tlb_fill): The data register can't allow fast reading. + + * host/posix/posix-disk.c (_tme_posix_disk_buffer_get): Now honor a + device's block size. + (tme_host_posix,disk): If the disk image is a character device, see if + it has a minimum block size. + + * host/posix/posix-tape.c (__tme_posix_tape_command): Fixed a bug + where an error return value wouldn't get returned. Fixed a bug where + a LOAD control would get called out even when an error occured during + loading. + + * scsi/emulexmt02.c: Replaced blocksize with block_size for + consistency. + (_tme_emulexmt02_cdb_block_limits): Added. + (tme_scsi,tape): Now handle the BLOCK LIMITS command. + + * scsi/scsi-cdb.c (tme_scsi_device_cdb_illegal): Added. + (_tme_scsi_device_make_inquiry_string): Added. + (tme_scsi_device_make_inquiry_data): Added. + (tme_scsi_device_cdb_inquiry): Removed. + + * scsi/scsi-device.c (tme_scsi_device_address_lun_aware): Always allow + an INQUIRY command, even for a LUN that isn't defined. + (tme_scsi_device_new): Set a NULL handler for the INQUIRY command by + default. + + * scsi/scsi-disk.c: Renamed the tme-scsi-2 disk type to tme-scsi-1, to + reflect that it's a SCSI-1 disk. + (tme_scsi_disk_cdb_inquiry): Added. + (tme_scsi_disk_cdb_mode_sense): + (tme_scsi_disk_cdb_start_stop): + (tme_scsi_disk_cdb_prevent_allow): + (tme_scsi_disk_cdb_read_capacity): Crudely implemented these commands. + (tme_scsi_disk_cdb_read1): + (tme_scsi_disk_cdb_write1): Implemented these commands. + (_tme_scsi_disk_control): Made public. + (_tme_scsi_disk_connection_break): Made public. + (_tme_scsi_disk_connection_make): Made public. + (_tme_scsi_disk_connections_new): Made public. + (tme_scsi,disk): Install the disk handler for the INQUIRY command. + + * scsi/scsi-tape.c (tme_scsi_tape_cdb_inquiry): Added. + (tme_scsi_tape_cdb_load_unload): + ((tme_scsi_tape_cdb_prevent_allow): Made these command handlers do + nothing, for now. + (tme_scsi,tape): Install the tape handler for the INQUIRY command. + + * tme/generic/disk.h: Define some disk controls. + + * tme/scsi/scsi-cdb.h: Define various macros, types, and prototypes + for generating INQUIRY response data. + + * tme/scsi/scsi-disk.h: Added some prototypes for some now-public + functions. + + * tme/scsi/scsi-tape.h: Added a prototype for + tme_scsi_tape_cdb_inquiry. + +Tue Aug 05 03:41:31 2003 Matthew Fredette + + * bus/multibus/sun-sc.c (_tme_sun_sc_scsi_cycle): If we're not + starting DMA, be sure to call out a wait-change cycle instead, + otherwise we can miss SCSI bus transitions. + + * generic/Makefile.am: Now compile tape.c + + * generic/tape.c host/posix/posix-tape.c scsi/emulexmt02.c + scsi/scsi-tape.c tme/generic/tape.h tme/scsi/scsi-tape.h: + + Added. + + * host/posix/Makefile.am: Now compile posix-tape.c. + + * ic/z8530.c (_tme_z8530_bus_cycle): Added support for the WR0 reset + Rx interrupt command. + + * ic/m68k/m68k-impl.h: Now always declare tme_m68k_verify_hook. + + * ic/m68k/m68k-insns-auto.sh: Fixed a bug in the V bit calculation in + the asl insns. + + * ic/m68k/m68k-misc.c (tme_m68k_verify_hook): Now always compile this + function. + + * ic/m68k/m68k-verify.c (_tme_m68k_verify_end): Ignore the T bits when + verifying %sr. + + * machine/sun2/SUN2-MULTIBUS: Updated. + + * scsi/Makefile.am: Now compile emulexmt02.c and scsi-tape.c. + + * scsi/acb4000.c (_tme_acb4000_address_lun): When marking a + nonextended sense as valid we now have to indicate how many bytes it + contains. + + * scsi/acb4000.c: + * tme/scsi/scsi-device.h: Fixed a comment. + + * scsi/scsi-bus.c (_tme_scsi_bus_cycle): Now be more universal about + remembering the last SCSI bus state we called out to each connection, + and call out whenever that state changes and the connection wants a + callout. When a connection gives us an empty DMA sequence, instead of + aborting just immediately call out. When a connection is in a DMA + sequence and the bus gets reset, try to reset on behalf of the + connection. + + * scsi/scsi-cdb.c (tme_scsi_device_cdb_request_sense): Now require + that the valid marker for nonextended senses give the length of the + sense. + + * scsi/scsi-device.c (tme_scsi_device_target_phase): Now log up to 128 + bytes of output in various phases. + (_tme_scsi_device_cycle): Now log short transfers. + (tme_scsi_device_target_dsmf): Fixed a comment. + + * scsi/scsi-disk.c (_tme_scsi_disk_connections_new): Fixed a usage + string. + (tme_disk,new): Fixed a comment. + + * serial/ms-mssystems.c: Removed the 3-byte packet support, since it's + apparently only found on the Tadpole SPARCbooks. + + * serial/serial-ms.c (_tme_serial_ms_serial_config): Now store the + peer's serial configuration. + + * serial/serial-ms.h: Now store the peer's serial configuration. + + * tme/connection.h: Now define TME_CONNECTION_TAPE. + + * tme/generic/Makefile.am: Now install tape.h. + + * tme/scsi/Makefile.am: Now install scsi-tape.h. + +Thu Jul 31 19:03:16 2003 Matthew Fredette + + * scsi/scsi-bus.c (_tme_scsi_bus_cycle): Fixed some uses of dma_in to + dma; caught by gcc -Wuninitialized. + + * tmesh/tmesh-cmds.c (_tmesh_command_log): Wrapped some otherwise + unused declarations in !TME_NO_LOG. + +Thu Jul 31 01:47:46 2003 Matthew Fredette + + * generic/Makefile.am: Now compile mouse.c. + + * generic/fb.c (tme_fb_xlat_best): Fixed a bug where we wouldn't + reject translation functions that don't match the question. + + * generic/keyboard.c: Fixed a comment. + + * generic/mouse.c host/gtk/gtk-mouse.c serial/ms-mssystems.c + serial/serial-ms.c serial/serial-ms.h tme/generic/mouse.h: + + Added. + + * host/gtk/Makefile.am: Now compile gtk-mouse.c. + + * host/gtk/gtk-display.c: + * host/gtk/gtk-display.h: + * host/gtk/gtk-keyboard.c: Many changes to add mouse support. + + * host/gtk/gtk-screen.c: Many changes to improve the user interface. + Now include a menu for changing the scaling factor. Fixed bugs with + respect to event masks, mostly by adding an event box. + + * ic/z8530.c (_tme_z8530_callout): Fixed a bug that caused us to never + check the callouts on channel B. + + * ic/m68k/m68k-insns.c (tme_m68k_reset): Added a crude implementation + of the reset instruction. + + * machine/sun2/SUN2-MULTIBUS: Updated. + + * machine/sun2/sun2-mainbus.c (_tme_sun2_bus_signal): Instead of + aborting, just ignore the RESET signal from the CPU for now. + + * serial/Makefile.am: Now compile serial-ms.c and ms-mssystems.c. + + * tme/connection.h: Now define TME_CONNECTION_MOUSE. + +Tue Jul 29 18:33:14 2003 Matthew Fredette + + * Makefile.am: + * tme/Makefile.am: Added scsi to SUBDIRS. + + * configure.in: If long on the target is 64-bits, use it as our 64-bit + type. Substitute the scsi Makefiles. + + * bus/multibus/3c400.c (TME_3C400_CSR_PUT_3c400): Corrected a + tme_betoh_u16 into a tme_htobe_u16. + + * bus/multibus/Makefile.am: Now compile sun-sc.c. + + * bus/multibus/sun-sc.c generic/disk.c generic/scsi.c + host/posix/posix-disk.c scsi/Makefile.am scsi/acb4000.c + scsi/disk-tme.c scsi/scsi-bus.c scsi/scsi-cdb.c scsi/scsi-device.c + scsi/scsi-disk.c scsi/scsi-msg.c tme/generic/disk.h + tme/generic/scsi.h tme/scsi/Makefile.am tme/scsi/scsi-cdb.h + tme/scsi/scsi-device.h tme/scsi/scsi-disk.h tme/scsi/scsi-msg.h: + + Added. + + * generic/Makefile.am: Now compile disk.c and scsi.c. + + * generic/bus-device.c: + * generic/bus-el.c: Fixed a comment. + + * host/posix/Makefile.am: Now compile posix-disk.c. + + * host/posix/posix-memory.c: + * host/posix/posix-serial.c: Fixed comments. + + * ic/mm58167.c: Fixed many significant problems with this emulation, + most notably that the size of the chip was not calculated correctly at + all. We now report with microsecond resolution, since SunOS's probe + routine requires this. + + * ic/z8530.c (_tme_z8530_intack): Simplified and fixed bugs in how + variable interrupt vectors are computed. For now, since there's no + emulation of the IEI pin, we just behave as if it's always tied low, + so we never put any vector on the bus during a hard interrupt + acknowledge. + (_tme_z8530_bus_cycle): Now ignore all WR0 CRC reset commands. Now + support the WR0 transmitter reset command. Now support reads of RR10 + and RR14. + + * ic/m68k/m68k-insns-auto.sh: The movem instructions cannot fault when + the register mask is zero. Now that we generally have a 64-bit type + available, fixed various bugs in the 64-bit multiply and divide + instructions. + + * ic/m68k/m68k-insns.c (tme_m68k_movec): Now appropriately mask values + loaded into control registers. movec only has a long version, and + SunOS on the Sun-2 doesn't necessarily clear the remainder of the data + register it uses to load %sfc and %dfc. + + * ic/m68k/m68k-misc.c (tme_m68k_exception_process_start): Fixed a bug + where the T bits weren't cleared. This bug was found by SunOS on the + sun2, which starts at least init in usermode with tracing enabled. + + * ic/m68k/m68k-verify.c (tme_m68k_verify_init): Now assume that the + CPU generates 28-bit addresses. SunOS 3 on the Sun-2 does this. + + * machine/sun/tme-sun-idprom.pl: Added support for the obscure + Roadrunner-MB1. + + * machine/sun2/sun2-bwtwo.c: Fixed various comments. + Because SunOS's probe routine fails otherwise, added support for the + entire 2KB page starting at the CSR to appear undecoded, i.e., to look + like the CSR repeated 1024 times. + + * machine/sun2/sun2-impl.h: Now define TME_SUN2_DVMA_SIZE_MBMEM and + TME_SUN2_DVMA_SIZE_VME. + Now make struct tme_sun2_bus_connection public, since the bus DVMA TLB + filler needs to know which bus it's filling for. + + * machine/sun2/sun2-mainbus.c (_tme_sun2_connections_new): When making + the connections for the mbmem or vme buses, be sure to set the last + address that we decode on the bus, for DVMA purposes. + + * machine/sun2/sun2-mmu.c (_tme_sun2_bus_tlb_fill): Fixed many bugs + involving filling TLB entries for bus's DVMA regions. + (_tme_sun2_mmu_pte_set): Added a missing protection. + + * tme/common.h: Added some crude support for 64-bit math, even for + compilers that offer no 64-bit type at all. + + * tme/connection.h: Now define TME_CONNECTION_SCSI and + TME_CONNECTION_DISK. + + * tme/generic/Makefile.am: Added more headers. + + * tme/generic/bus-device.h: Corrected a comment. + + * tme/generic/ic.h: Corrected the 64-bit support. + + * tmesh/tmesh-cmds.c (_tmesh_command_log): Added. + + * tmesh/tmesh-impl.h: Now define TMESH_COMMAND_LOG. + + * tmesh/tmesh-input.y: Added support for parsing the `log' command. + +Tue Jul 22 18:30:31 2003 Matthew Fredette + + * generic/fb-xlat-auto.sh: Changes to silence gcc -Wuninitialized. + * host/gtk/gtk-keyboard.c (_tme_gtk_keyboard_lookup): Changes to + silence gcc -Wuninitialized. + + * libtme/module.c (tme_module_open): Changes to silence gcc + -Wuninitialized. + + * libtme/threads-sjlj.c (tme_sjlj_dispatch): Declared some locals + volatile to silence gcc's setjmp-related warning. + +Fri Jun 27 21:30:37 2003 Matthew Fredette + + * Makefile.am: Added the serial directory to SUBDIRS. + * configure.in: Many changes to support framebuffer emulation and X11 + and gtk elements. Also added some serial elements support. + + * generic/Makefile.am: Now create fb-xlat-auto.c and build fb.c and + keyboard.c. + + * generic/bus-device.c: + * generic/bus-el.c: + * generic/bus.c: Although I hate doing this, various changes to + support a single bus connection connecting to a bus region sparsely. + + * generic/fb-xlat-auto.sh: Now declare src_bypb to include one more + extra line of data, to make a total of two. + Fixed a bug where translating and halving would really translate every + line twice. Now when we reach the end of a line we skip the next + line, to move to the next pair of lines. + + * generic/fb.c generic/keyboard.c host/gtk/Makefile.am + host/gtk/gtk-display.c host/gtk/gtk-display.h + host/gtk/gtk-keyboard.c host/gtk/gtk-screen.c libtme/hash.c + machine/sun2/sun2-bwtwo.c serial/Makefile.am serial/kb-sun.c + serial/serial-kb.c serial/serial-kb.h tme/hash.h tme/misc.h + tme/generic/fb.h tme/generic/keyboard.h: + + Added. + + * generic/keyboard.c: Disabled debug output. + + * host/Makefile.am: Added gtk to DIST_SUBDIRS. + + * ic/am9513.c (_tme_am9513_th_timer): Removed a newline from a log + statement. + + * ic/z8530.c (_tme_z8530_channel_reset): Fixed an incorrect reset + value for RR3. + (_tme_z8530_config): Simply ignore a peer's request to change the + serial configuration. + + * ic/m68k/m68k-execute.c: To fix a problem where m68k execution could + possibly never yield (by oscillating back and forth between fast and + slow execution, for example) we make sure that we never run more than + _tme_m68k_instruction_burst before checking for external interrupts + and yielding. + + * ic/m68k/m68k-impl.h: Now in addition to _tme_m68k_instruction_burst, + the maximum burst length, there is + _tme_m68k_instruction_burst_remaining, which is the maximum number of + instructions remaining in the current burst. + + * ic/m68k/m68k-iset-expand.pl: + * ic/m68k/m68k-opmap-make.pl: Made the RCS keywords, copyright and + license like other files. + + * ic/m68k/m68k-misc.c (tme_m68k_new): Now initialize the new + _tme_m68k_instruction_burst_remaining struct member. + + * libtme/Makefile.am: Now compile hash.c, and use the GTK CFLAGS. + + * libtme/misc.c (tme_misc_tokenize): + (tme_free_string_array): Added. + + * libtme/module.c (tme_module_open): Now use tme_misc_tokenize to + tokenize. + + * libtme/threads-sjlj.c: Although I hate doing this, many changes to + support using the GTK event loop. + + * machine/sun2/Makefile.am: Now build sun2-bwtwo.c. + + * machine/sun2/SUN2-MULTIBUS: Added commands to create a real physical + console. + + * machine/sun2/sun2-mainbus.c (_tme_sun2_bus_intack): Now acknowledge + interrupts on the obmem bus too, since the bwtwo z8530s are there. + + * tme/Makefile.am: Now install misc.h and hash.h. + + * tme/common.h: Now define tme_letoh_u16() and tme_letoh_u32(x). + Declare tme_free_string_array(). + + * tme/connection.h: Add connection types for keyboards and + framebuffers. + + * tme/threads.h: Under _TME_HAVE_GTK, declare tme_threads_gtk_init. + + * tme/tme.h: Now include and . + + * tme/generic/Makefile.am: Now install fb.h and keyboard.h. + + * tme/generic/bus-device.h: + * tme/generic/bus.h: Changes to support a single bus connection + connecting to a bus region sparsely. + + * tmesh/Makefile.am: Now link with the GTK libraries. + +Fri Jun 27 01:37:57 2003 Matthew Fredette + + * generic/fb-xlat-auto.sh: Added. + +Thu Jun 26 13:16:12 2003 Matthew Fredette + + * tme/generic/ic.h: Fixed grammar in a comment. + +Sun May 18 02:40:56 2003 Matthew Fredette + + * configure.in: Changed the version number to 0.0; this is very alpha. + There are now fewer include directories under tme/; many unnecessary + headers that belonged to modules were removed. + + * bus/multibus/3c400.c: No longer include . + + * bus/multibus/Makefile.am generic/Makefile.am host/bsd/Makefile.am + host/posix/Makefile.am ic/Makefile.am ic/m68k/Makefile.am + libtme/Makefile.am machine/sun/Makefile.am machine/sun2/Makefile.am + tmesh/Makefile.am: + + Added library and module versioning. + + * host/bsd/bsd-bpf.c: + * host/bsd/bsd-if.c: Now include "bsd-impl.h" instead of + . + + * host/bsd/bsd-impl.h: + * machine/sun/tme-sun-idprom.pl: Added. + + * machine/sun2/SUN2-MULTIBUS: Changed the extension on the PROM and + IDPROM files from .dat to .bin. + + * machine/sun2/SUN2-MULTIBUS: Changed the name of the PROM filename to + match the documentation. + + * tme/Makefile.am: Removed the host and bus include directories; they + don't exist anymore. + +Sat May 17 20:34:07 2003 Matthew Fredette + + * acinclude.m4: Added an RCS Id and a short comment. + * configure.in: Added an RCS Id, the copyright, and license. Do a + real path search for perl. + + * libtme/log-prf.c: + * libtme/module.c: + * machine/sun2/sun2-mainbus.c: Changes to silence gcc -Wuninitialized. Fri May 16 21:48:16 2003 Matthew Fredette - * By far, this is the worst bulk commit I've ever done. - Many changes to simplify the element interface as much - as possible, to do modules better, and to do logging - better. Fixed a small number of actual bugs. Also - converted to modern autoconf and automake, because - the module support requires modern libtool. - Also added the main libtme, libtmesh, and tmesh itself. + * Makefile.am TODO acconfig.h configure.in modules bus/Makefile.am + bus/multibus/3c400.c bus/multibus/Makefile.am generic/Makefile.am + generic/bus-device.c generic/bus-el.c generic/bus.c + host/bsd/Makefile.am host/bsd/bsd-bpf.c host/posix/Makefile.am + host/posix/posix-memory.c host/posix/posix-serial.c ic/Makefile.am + ic/am9513.c ic/mm58167.c ic/z8530.c ic/m68k/Makefile.am + ic/m68k/m68010.c ic/m68k/m68k-impl.h ic/m68k/m68k-insns-auto.sh + ic/m68k/m68k-misc.c libtme/Makefile.am libtme/alloc.c + libtme/element.c libtme/log-prf.c libtme/log.c libtme/misc.c + libtme/module.c libtme/threads-sjlj.c machine/Makefile.am + machine/sun/Makefile.am machine/sun/sun-mmu.c + machine/sun2/Makefile.am machine/sun2/SUN2-MULTIBUS + machine/sun2/sun2-impl.h machine/sun2/sun2-mainbus.c + machine/sun2/sun2-mmu.c tme/Makefile.am tme/common.h + tme/connection.h tme/element.h tme/log.h tme/module.h tme/tme.h + tme/tmesh.h tme/generic/bus-device.h tme/generic/bus.h + tme/ic/am9513.h tme/ic/m68k.h tme/ic/mm58167.h tme/ic/z8530.h + tmesh/Makefile.am tmesh/tmesh-cmds.c tmesh/tmesh-impl.h + tmesh/tmesh-input.y tmesh/tmesh-util.c tmesh/tmesh.c: + + By far, this is the worst bulk commit I've ever done. Many changes + to simplify the element interface as much as possible, to do modules + better, and to do logging better. Fixed a small number of actual + bugs. Also converted to modern autoconf and automake, because the + module support requires modern libtool. Also added the main libtme, + libtmesh, and tmesh itself. + + * ic/m68k/m68k-verify.c: Now include . Fri May 16 17:50:17 2003 Matthew Fredette - * acinclude.m4 (AC_CHECK_ALIGNOF): Now takes only a size, in bits, to check the - alignment for. Before, it used to take a string of the form intN_t, - which wouldn't work on systems that don't define an intN_t type. - When cross-compiling, assume the target requires alignment equal - to the size. Now use AC_DEFINE_UNQUOTED's third argument to - specify the config.h.in comment. - (AC_CHECK_SHIFTMAX): Added. - (AC_SYS_SOCKADDR_SA_LEN): Now use AC_DEFINE_UNQUOTED's third - argument to specify the config.h.in comment. + * acinclude.m4 (AC_CHECK_ALIGNOF): Now takes only a size, in bits, to + check the alignment for. Before, it used to take a string of the form + intN_t, which wouldn't work on systems that don't define an intN_t + type. When cross-compiling, assume the target requires alignment + equal to the size. Now use AC_DEFINE_UNQUOTED's third argument to + specify the config.h.in comment. + (AC_CHECK_SHIFTMAX): Added. + (AC_SYS_SOCKADDR_SA_LEN): Now use AC_DEFINE_UNQUOTED's third argument + to specify the config.h.in comment. Thu May 15 15:52:08 2003 Matthew Fredette - * ic/m68k/m68k-insns-auto.sh: Fixed bugs in the shift and rotate insns, where we might try to - shift by an amount greater than the maximum meaningful shift for - a given size. - -Sat May 10 13:46:02 2003 Matthew Fredette - - * acinclude.m4 (AC_CHECK_ALIGNOF): Fixed a bug where this would stop on - the first misalignment, instead of continuing to find the - true minimum alignment. For example, this would have - found the minimum 32-bit alignment to be 4 instead of 2 - on a 68000 or 68010, stopping on the misaligned address 3. - - * configure.in: Some early distribution work. - * ic/Makefile.am: Some early distribution work. - * ic/m68k/Makefile.am: Some early distribution work. - * ic/m68k/m68k-insns-auto.sh: Fixed some bad macro and type name references. - * ic/m68k/m68k-insns-auto.sh: Handled the rename of the aligned and unaligned memory access - rwlocking macros, and use the new tme_memory_sequence_ rwlocking - macros. Generally made things a little easier to read, although - we do rely on the optimizer to do the right thing somewhat more. - - * ic/m68k/m68k-misc-auto.sh: Fixed some bad macro and type name references. - * ic/m68k/m68k-misc-auto.sh: Handled the rename of the aligned and unaligned memory access - rwlocking macros, and use the new tme_memory_sequence_ rwlocking - macros. Generally made things a little easier to read, although - we do rely on the optimizer to do the right thing somewhat more. - - * machine/Makefile.am: Some early distribution work. - * machine/sun2/Makefile.am: Some early distribution work. - * tme/Makefile.am: Some early distribution work. + * ic/m68k/m68k-insns-auto.sh: Fixed bugs in the shift and rotate + insns, where we might try to shift by an amount greater than the + maximum meaningful shift for a given size. + +Sat May 10 15:41:23 2003 Matthew Fredette + + * acinclude.m4 (AC_CHECK_ALIGNOF): Fixed a bug where this would stop + on the first misalignment, instead of continuing to find the true + minimum alignment. For example, this would have found the minimum + 32-bit alignment to be 4 instead of 2 on a 68000 or 68010, stopping on + the misaligned address 3. + + * configure.in ic/Makefile.am ic/m68k/Makefile.am machine/Makefile.am + machine/sun2/Makefile.am tme/Makefile.am: + + Some early distribution work. + + * ic/m68k/m68k-insns-auto.sh: + * ic/m68k/m68k-misc-auto.sh: Fixed some bad macro and type name + references. + + * ic/m68k/m68k-insns-auto.sh: + * ic/m68k/m68k-misc-auto.sh: Handled the rename of the aligned and + unaligned memory access rwlocking macros, and use the new + tme_memory_sequence_ rwlocking macros. Generally made things a little + easier to read, although we do rely on the optimizer to do the right + thing somewhat more. + * tme/threads.h: Renamed the memory-access locking functions to be - tme_memory_HOW_WHATlock, where HOW is aligned or - unaligned, and WHAT is rd or wr. - Now define the tme_memory_sequence_WHATlock macros, - used when doing a sequence of memory accesses that - must appear to be atomic. - Now define TME_SEQUENCE_ACCESS_NOT_COSTLIER as TRUE - if locking for a sequence and locking for an aligned - access have the same cost, else define it as FALSE. + tme_memory_HOW_WHATlock, where HOW is aligned or unaligned, and WHAT + is rd or wr. Now define the tme_memory_sequence_WHATlock macros, used + when doing a sequence of memory accesses that must appear to be + atomic. + Now define TME_SEQUENCE_ACCESS_NOT_COSTLIER as TRUE if locking for a + sequence and locking for an aligned access have the same cost, else + define it as FALSE. Sat May 10 00:31:32 2003 Matthew Fredette - * ic/m68k/m68k-insns-auto.sh: Overhauled the shift instructions to not use loops. + * ic/m68k/m68k-insns-auto.sh: Overhauled the shift instructions to not + use loops. + +Fri May 09 17:45:06 2003 Matthew Fredette + + * ic/m68k/m68k-execute.c: As an optimization, now require the + individual insn functions to use TME_M68K_INSN_CANFAULT if they may + fault, instead of figuring out every time if an insn can fault or not. + Check that insn functions have set it if they need it, and left it + unset if they do not need it. + + * ic/m68k/m68k-execute.c: Made some changes to somewhat optimize + certain effective address calculations. + + * ic/m68k/m68k-impl.h: Now define TME_M68K_INSN_CANFAULT. + + * ic/m68k/m68k-impl.h: Renumbered the TME_M68K_SIZE_ macros slightly + to enable an optimization on effective address + predecrement/postincrement calculation. Grew the memory transfer + function arrays to match. + Moved the generic IC data structure to the top of the m68k structure, + to enable register indexing to happen without an offset. + Removed _tme_m68k_areg_increment, it's no longer needed. + + * ic/m68k/m68k-insns-auto.sh: + * ic/m68k/m68k-insns.c: Now use TME_M68K_INSN_CANFAULT where it's + needed. Also fixed some random restarting bugs in some insns. + + * ic/m68k/m68k-misc.c: Removed _tme_m68k_areg_increment, it's no + longer needed. Grew the memory transfer function arrays to match the + renumbering of the TME_M68K_SIZE_ macros, and added some preprocessor + error checking on those macros. + +Fri May 09 14:36:16 2003 Matthew Fredette + + * bus/multibus/3c400.c generic/bus-device.c generic/bus-el.c + generic/bus.c host/posix/posix-memory.c ic/am9513.c ic/mm58167.c + ic/z8530.c tme/generic/bus-device.h tme/generic/bus.h: + + Bulk change to no longer require bus connections to have a + power-of-two width. This is largely a name change, renaming + address_mask to address_last, as nothing depended on the + address_mask being all-bits-one. + + * bus/multibus/3c400.c (_tme_3c400_callout): Make buffer status values + have the minimum Ethernet frame size. + + * ic/am9513.c: Now include , in case + TME_AM9513_TRACK_INT_RATE is defined. + + * ic/am9513.c: Under TME_AM9513_TRACK_INT_RATE, periodically report + the interrupt rates achieved by the various timers. + + * machine/sun2/sun2-mmu.c (_tme_sun2_m68k_tlb_fill): Because + supervisor and user accesses go through different context registers, + TLBs are generally only ever valid for the supervisor or the user, but + not both. Fixed a bug where a TLB for a user-visible page would be + marked as good for the supervisor even if the mapping isn't the same + in the system context. + + * tme/generic/ethernet.h: Now define TME_ETHERNET_CRC_SIZE. -Fri May 09 16:32:06 2003 Matthew Fredette +Thu May 08 23:37:55 2003 Matthew Fredette - * ic/m68k/m68k-execute.c: As an optimization, now require the individual insn functions - to use TME_M68K_INSN_CANFAULT if they may fault, instead of - figuring out every time if an insn can fault or not. Check - that insn functions have set it if they need it, and left it - unset if they do not need it. - - * ic/m68k/m68k-execute.c: Made some changes to somewhat optimize certain - effective address calculations. - - * ic/m68k/m68k-impl.h: Now define TME_M68K_INSN_CANFAULT. - * ic/m68k/m68k-impl.h: Renumbered the TME_M68K_SIZE_ macros slightly to enable an - optimization on effective address predecrement/postincrement - calculation. Grew the memory transfer function arrays to - match. - Moved the generic IC data structure to the top of the m68k - structure, to enable register indexing to happen without - an offset. - Removed _tme_m68k_areg_increment, it's no longer needed. - - * ic/m68k/m68k-insns-auto.sh: Now use TME_M68K_INSN_CANFAULT where it's needed. Also - fixed some random restarting bugs in some insns. - - * ic/m68k/m68k-insns.c: Now use TME_M68K_INSN_CANFAULT where it's needed. Also - fixed some random restarting bugs in some insns. - - * ic/m68k/m68k-misc.c: Removed _tme_m68k_areg_increment, it's no longer needed. - Grew the memory transfer function arrays to match the - renumbering of the TME_M68K_SIZE_ macros, and added some - preprocessor error checking on those macros. - -Fri May 09 13:12:01 2003 Matthew Fredette - - * bus/multibus/3c400.c: Bulk change to no longer require bus connections to have a - power-of-two width. This is largely a name change, renaming - address_mask to address_last, as nothing depended on the - address_mask being all-bits-one. - - * bus/multibus/3c400.c (_tme_3c400_callout): Make buffer status values have the minimum - Ethernet frame size. - - * generic/bus-device.c: Bulk change to no longer require bus connections to have a - power-of-two width. This is largely a name change, renaming - address_mask to address_last, as nothing depended on the - address_mask being all-bits-one. - - * generic/bus-el.c: Bulk change to no longer require bus connections to have a - power-of-two width. This is largely a name change, renaming - address_mask to address_last, as nothing depended on the - address_mask being all-bits-one. - - * generic/bus.c: Bulk change to no longer require bus connections to have a - power-of-two width. This is largely a name change, renaming - address_mask to address_last, as nothing depended on the - address_mask being all-bits-one. - - * host/posix/posix-memory.c: Bulk change to no longer require bus connections to have a - power-of-two width. This is largely a name change, renaming - address_mask to address_last, as nothing depended on the - address_mask being all-bits-one. - - * ic/am9513.c: Now include , in case TME_AM9513_TRACK_INT_RATE is - defined. - - * ic/am9513.c: Bulk change to no longer require bus connections to have a - power-of-two width. This is largely a name change, renaming - address_mask to address_last, as nothing depended on the - address_mask being all-bits-one. - - * ic/am9513.c: Under TME_AM9513_TRACK_INT_RATE, periodically report the - interrupt rates achieved by the various timers. - - * ic/mm58167.c: Bulk change to no longer require bus connections to have a - power-of-two width. This is largely a name change, renaming - address_mask to address_last, as nothing depended on the - address_mask being all-bits-one. - - * ic/z8530.c: Bulk change to no longer require bus connections to have a - power-of-two width. This is largely a name change, renaming - address_mask to address_last, as nothing depended on the - address_mask being all-bits-one. - - * machine/sun2/sun2-mmu.c (_tme_sun2_m68k_tlb_fill): Because supervisor and user accesses - go through different context registers, TLBs are generally only - ever valid for the supervisor or the user, but not both. Fixed - a bug where a TLB for a user-visible page would be marked as good - for the supervisor even if the mapping isn't the same in the - system context. - - * tme/generic/bus-device.h: Bulk change to no longer require bus connections to have a - power-of-two width. This is largely a name change, renaming - address_mask to address_last, as nothing depended on the - address_mask being all-bits-one. - - * tme/generic/bus.h: Bulk change to no longer require bus connections to have a - power-of-two width. This is largely a name change, renaming - address_mask to address_last, as nothing depended on the - address_mask being all-bits-one. - - * tme/generic/ethernet.h: Now define TME_ETHERNET_CRC_SIZE. - -Thu May 08 23:37:10 2003 Matthew Fredette - - * ic/m68k/m68k-insns-auto.sh: Fixed bugs, found by the verifier, in the SR and CCR immediate - instructions. - - * ic/m68k/m68k-verify.c: Now keep a short ring of PCs verified. - -Thu May 08 18:25:20 2003 Matthew Fredette - - * ic/z8530.c (_tme_z8530_intack): Changes to silence -Wuninitialized. - * ic/m68k/Makefile.am: No longer define _TME_M68K_OPW_OK. - * ic/m68k/m68k-execute.c: Changes to support verifying restarted instructions. - * ic/m68k/m68k-impl.h: Fixed the definitions of the dummy tme_m68k_verify_ macros. - * ic/m68k/m68k-impl.h: Now call tme_m68k_verify_end_branch inside TME_M68K_INSN_BRANCH. - Added a unique identifier member to the sequence structure. - Made a few functions take a const struct tme_m68k *. - Made changes to the verifier to support verifying restarted - instructions. - - * ic/m68k/m68k-insns-auto.sh: Fixed a bug found by the verifier, where the movem - instructions weren't following the EA discipline correctly - and so would transfer to the wrong addresses after a - restart. + * ic/m68k/m68k-insns-auto.sh: Fixed bugs, found by the verifier, in + the SR and CCR immediate instructions. - * ic/m68k/m68k-misc.c (tme_m68k_go_slow): Now take a const struct tme_m68k *. + * ic/m68k/m68k-verify.c: Now keep a short ring of PCs verified. + +Thu May 08 19:22:10 2003 Matthew Fredette + + * ic/z8530.c (_tme_z8530_intack): Changes to silence -Wuninitialized. + * ic/m68k/Makefile.am: No longer define _TME_M68K_OPW_OK. + * ic/m68k/m68k-execute.c: Changes to support verifying restarted + instructions. + + * ic/m68k/m68k-impl.h: Fixed the definitions of the dummy + tme_m68k_verify_ macros. + + * ic/m68k/m68k-impl.h: Now call tme_m68k_verify_end_branch inside + TME_M68K_INSN_BRANCH. Added a unique identifier member to the + sequence structure. Made a few functions take a const struct tme_m68k + *. Made changes to the verifier to support verifying restarted + instructions. + + * ic/m68k/m68k-insns-auto.sh: Fixed a bug found by the verifier, where + the movem instructions weren't following the EA discipline correctly + and so would transfer to the wrong addresses after a restart. + + * ic/m68k/m68k-misc.c (tme_m68k_go_slow): Now take a const struct + tme_m68k *. (tme_m68k_sequence_empty): - (tme_m68k_sequence_fill): Made the argument that's supposed - to be read-only const. Under _TME_M68K_VERIFY, save and - restore the sequence unique identifier. - - * ic/m68k/m68k-verify.c: Many changes to support verifying instructions that ended - only after they were restarted because of one or more bus - faults. + (tme_m68k_sequence_fill): Made the argument that's supposed to be + read-only const. Under _TME_M68K_VERIFY, save and restore the + sequence unique identifier. + + * ic/m68k/m68k-verify.c: Many changes to support verifying + instructions that ended only after they were restarted because of one + or more bus faults. Thu May 08 13:35:43 2003 Matthew Fredette - * ic/m68k/m68k-execute.c: Replaced _TME_M68K_OPW_OK bits with new _TME_M68K_VERIFY bits. - * ic/m68k/m68k-impl.h: Replaced _TME_M68K_OPW_OK bits with new _TME_M68K_VERIFY bits. - * ic/m68k/m68k-insns-auto.sh: In all memory access functions, added calls to the verifier. - Fixed a bug in the divide routines, found by the verifier - - the N flag in set based on the final small quotient, not on - the big one. - - * ic/m68k/m68k-misc-auto.sh: Now define TME_M68K_IREG32_COUNT. - * ic/m68k/m68k-misc.c: Replaced _TME_M68K_OPW_OK bits with new _TME_M68K_VERIFY bits. - * ic/m68k/m68k-verify.c: Added. + * ic/m68k/m68k-execute.c: + * ic/m68k/m68k-impl.h: + * ic/m68k/m68k-misc.c: Replaced _TME_M68K_OPW_OK bits with new + _TME_M68K_VERIFY bits. + + * ic/m68k/m68k-insns-auto.sh: In all memory access functions, added + calls to the verifier. Fixed a bug in the divide routines, found by + the verifier - the N flag in set based on the final small quotient, + not on the big one. + + * ic/m68k/m68k-misc-auto.sh: Now define TME_M68K_IREG32_COUNT. -Wed May 07 02:35:17 2003 Matthew Fredette + * ic/m68k/m68k-verify.c: Added. - * generic/bus-el.c (_tme_bus_connections_new): Store the final bus interrupt - signal number, not the raw ipl. +Wed May 07 02:37:05 2003 Matthew Fredette + + * generic/bus-el.c (_tme_bus_connections_new): Store the final bus + interrupt signal number, not the raw ipl. * ic/z8530.c: Although I hate doing this, too many changes to go into - detail. Much work to support interrupt driven operation. + detail. Much work to support interrupt driven operation. + + * ic/z8530reg.h: Added definitions for RR3. + + * ic/m68k/m68k-impl.h: Fixed a serious bug in the TME_M68K_FLAG_SR + definition that would zero part of the interrupt mask. + + * ic/m68k/m68k-insns-auto.sh: Fixed a bug where negx wasn't preserving + the Z flag if the result was zero. + + * machine/sun2/sun2-test.c (main): Fixed a bug where the zs0 ipl arg + was getting lost. + +Mon May 05 23:20:11 2003 Matthew Fredette + + * TODO: Updated. - * ic/z8530reg.h: Added definitions for RR3. - * ic/m68k/m68k-impl.h: Fixed a serious bug in the TME_M68K_FLAG_SR definition - that would zero part of the interrupt mask. + * generic/serial.c (tme_serial_buffer_copyout): Fixed a bug where if + we were copying to a NULL buffer and the copyout wrapped in the ring + buffer, we would do pointer arithmetic on the NULL. - * ic/m68k/m68k-insns-auto.sh: Fixed a bug where negx wasn't preserving the Z flag if the - result was zero. + * ic/m68k/m68010.c (_tme_m68010_rte): Fixed a bug where we forgot to + recover the group 0 function code and address for the cycle restart. + Fixed a bug where we wouldn't reset to extract our internal state from + the stack buffer. - * machine/sun2/sun2-test.c (main): Fixed a bug where the zs0 ipl arg was getting lost. + * ic/m68k/m68k-insns-auto.sh: Fixed several instructions that trap or + do trap-like things to update PC to be the PC of the following + instruction before trapping. + (tme_m68k_read_mem): Fixed a memcpy direction bug. -Mon May 05 23:08:13 2003 Matthew Fredette + * ic/m68k/m68k-insns.c: Fixed several instructions that trap or do + trap-like things to update PC to be the PC of the following + instruction before trapping. - * TODO: Updated. - * generic/serial.c (tme_serial_buffer_copyout): Fixed a bug where if we were - copying to a NULL buffer and the copyout wrapped in the - ring buffer, we would do pointer arithmetic on the NULL. + * libtme/threads-sjlj.c (tme_sjlj_cond_notify): Fixed a bug where we + would cancel a thread's wait condition instead of notifying the + thread. - * ic/m68k/m68010.c (_tme_m68010_rte): Fixed a bug where we forgot to recover - the group 0 function code and address for the cycle restart. - Fixed a bug where we wouldn't reset to extract our internal - state from the stack buffer. + * machine/sun/sun-mmu.c (tme_sun_mmu_tlb_fill): Support the new + expansive MMU PTE protections. - * ic/m68k/m68k-insns-auto.sh: Fixed several instructions that trap or do trap-like things - to update PC to be the PC of the following instruction before - trapping. - (tme_m68k_read_mem): Fixed a memcpy direction bug. + * machine/sun2/sun2-mainbus.c (_tme_sun2_bus_intack): Now acknowledge + soft interrupts. + (tme_machine_sun2_clock_new): Fixed a bug where we had the Timer 2 + output miswired. - * ic/m68k/m68k-insns.c: Fixed several instructions that trap or do trap-like things - to update PC to be the PC of the following instruction before - trapping. + * machine/sun2/sun2-mmu.c: Many changes to support the new full + understanding of sun2 PTE protections. - * libtme/threads-sjlj.c (tme_sjlj_cond_notify): Fixed a bug where we would cancel - a thread's wait condition instead of notifying the thread. + * tme/machine/sun.h: Expanded on the generic PTE protections, to + support the more expressive sun2 protections. - * machine/sun/sun-mmu.c (tme_sun_mmu_tlb_fill): Support the new expansive MMU PTE - protections. +Sun May 04 22:46:12 2003 Matthew Fredette - * machine/sun2/sun2-mainbus.c (_tme_sun2_bus_intack): Now acknowledge soft interrupts. - (tme_machine_sun2_clock_new): Fixed a bug where we had the - Timer 2 output miswired. + * ic/am9513.c (_tme_am9513_counters_disarm): Added. + (_tme_am9513_th_timer): Try to avoid 32-bit integer overflow when + calculating the sleep time. + (_tme_am9513_bus_cycle): Now support the disarm timers command. - * machine/sun2/sun2-mmu.c: Many changes to support the new full understanding of sun2 - PTE protections. + * ic/mm58167.c: Changes to silence -Wuninitialized. - * tme/machine/sun.h: Expanded on the generic PTE protections, to support the more - expressive sun2 protections. + * ic/mm58167.c: + * tme/ic/mm58167.h: Added. -Sun May 04 22:26:01 2003 Matthew Fredette + * ic/z8530.c: Although I hate doing this, too much work to go into + detail. Did more groundwork for eventually generating interrupts. - * ic/am9513.c (_tme_am9513_counters_disarm): Added. - (_tme_am9513_th_timer): Try to avoid 32-bit integer overflow - when calculating the sleep time. - (_tme_am9513_bus_cycle): Now support the disarm timers command. + * ic/m68k/m68k-execute.c: Now wrap the execute hook call in + _TME_M68K_OPW_OK. - * ic/mm58167.c: Changes to silence -Wuninitialized. - * ic/mm58167.c: Added. - * ic/z8530.c: Although I hate doing this, too much work to go into detail. - Did more groundwork for eventually generating interrupts. + * ic/m68k/m68k-misc.c (tme_m68k_exception_process_start): Fixed a bug + where the new ipl mask was put into the sr at the wrong position. - * ic/m68k/m68k-execute.c: Now wrap the execute hook call in _TME_M68K_OPW_OK. - * ic/m68k/m68k-misc.c (tme_m68k_exception_process_start): Fixed a bug where the new - ipl mask was put into the sr at the wrong position. + * machine/sun2/sun2-mainbus.c (tme_machine_sun2_tod_new): Added. - * machine/sun2/sun2-mainbus.c (tme_machine_sun2_tod_new): Added. - * machine/sun2/sun2-mmu.c (_tme_sun2_obbus_fault_handler): Removed. + * machine/sun2/sun2-mmu.c (_tme_sun2_obbus_fault_handler): Removed. (_tme_sun2_bus_fault_handler): (_tme_sun2_obio_fault_handler): - (_tme_sun2_obmem_fault_handler): Added. + (_tme_sun2_obmem_fault_handler): Added. (_tme_sun2_multibus_fault_handler): Now just call - _tme_sun2_bus_fault_handler. - (_tme_sun2_tlb_fill_mmu): Use the new bus-specific - fault handlers. - - * machine/sun2/sun2-test.c: Now create and connect the TOD chip. - * tme/ic/Makefile.am: Updated. - * tme/ic/mm58167.h: Added. + _tme_sun2_bus_fault_handler. + (_tme_sun2_tlb_fill_mmu): Use the new bus-specific fault handlers. + + * machine/sun2/sun2-test.c: Now create and connect the TOD chip. + + * tme/ic/Makefile.am: Updated. Sat May 03 19:27:07 2003 Matthew Fredette - * TODO: Updated. - * ic/m68k/m68k-execute.c: Fixed multiple bugs in the handling of brief EA extension words. - * ic/m68k/m68k-insns-auto.sh: Fixed a bug where subx and addx didn't take the (previous) X - flag into account when calculating flags. - - * machine/sun2/sun2-control.c (_tme_sun2_control_cycle_handler): Now call _tme_sun2_ipl_check - whenever the enable register is written. - - * machine/sun2/sun2-impl.h: Added macros for the enable register bits. - * machine/sun2/sun2-mainbus.c (_tme_sun2_ipl_check): Added. - (_tme_sun2_bus_signal): Now call _tme_sun2_ipl_check to update - the ipl driven to the CPU. - -Fri May 02 17:10:58 2003 Matthew Fredette - - * TODO: Updated. - * acconfig.h: Added. - * acinclude.m4: Added. - * configure.in: Now check for minimum alignments. - Now check for various headers and other things needed by the BSD code. - - * bus/Makefile.am: Added support for new components. - * bus/multibus/3c400.c (_tme_3c400): Some changes to silence -Wuninitialized. - * bus/multibus/3c400.c: Added. - * bus/multibus/Makefile.am: Added. - * generic/Makefile.am: Added support for new components. - * generic/ethernet.c: Added. - * host/Makefile.am: Added support for new components. - * host/bsd/Makefile.am: Added. - * host/bsd/bsd-bpf.c: Added. - * host/bsd/bsd-if.c: Added. - * host/posix/posix-serial.c: Fixed some indentation, and one 0 to a TME_OK. + * TODO: Updated. + + * ic/m68k/m68k-execute.c: Fixed multiple bugs in the handling of brief + EA extension words. + + * ic/m68k/m68k-insns-auto.sh: Fixed a bug where subx and addx didn't + take the (previous) X flag into account when calculating flags. + + * machine/sun2/sun2-control.c (_tme_sun2_control_cycle_handler): Now + call _tme_sun2_ipl_check whenever the enable register is written. + + * machine/sun2/sun2-impl.h: Added macros for the enable register bits. + + * machine/sun2/sun2-mainbus.c (_tme_sun2_ipl_check): Added. + (_tme_sun2_bus_signal): Now call _tme_sun2_ipl_check to update the ipl + driven to the CPU. + +Fri May 02 17:37:10 2003 Matthew Fredette + + * TODO: Updated. + + * acconfig.h acinclude.m4 bus/multibus/3c400.c + bus/multibus/Makefile.am generic/ethernet.c host/bsd/Makefile.am + host/bsd/bsd-bpf.c host/bsd/bsd-if.c tme/generic/ethernet.h: + + Added. + + * configure.in: Now check for minimum alignments. Now check for + various headers and other things needed by the BSD code. + + * bus/Makefile.am: + * generic/Makefile.am: + * host/Makefile.am: + * tme/generic/Makefile.am: Added support for new components. + + * bus/multibus/3c400.c (_tme_3c400): Some changes to silence + -Wuninitialized. + + * host/posix/posix-serial.c: Fixed some indentation, and one 0 to a + TME_OK. + * ic/am9513.c (_tme_am9513_counters_load): - (_tme_am9513_counters_arm): Added. - (_tme_am9513_th_timer): Try to avoid multiplication overflow - when calculating the number of basic ticks that have elapsed. - Try to handle armed and unarmed counters correctly. - (_tme_am9513_bus_cycle): Now load and arm counters correctly. - (tme_ic_am9513_new): Calculate the number of basic ticks in - a millisecond for the benefit of the timer thread. - - * ic/m68k/m68010.c (_tme_m68010_rte): tme_m68k_rte_finish no longer touches the - sequence at all, so before calling it make sure the sequence - is exactly what it's supposed to be. - - * ic/m68k/m68k-execute.c: In the fast executor, assert that the ITLB entry allows fast - reading for the current PC or that the PC is one greater than - the last address covered by the entry. Fixed the fast-fetch-failed - code to more correctly simulate a group 0 exception and associated - RTE. - - * ic/m68k/m68k-insns-auto.sh: Cleaned up and fixed the code generated for cmpm, addx, and subx. - At least, cmpm wasn't getting its address registers postincremented, - and addx and subx weren't treating the Z flag properly. - In the fetch insns, take the address to fetch from as an argument, - instead of using the real ic->tme_m68k_ireg_pc with tme_m68k_read + (_tme_am9513_counters_arm): Added. + (_tme_am9513_th_timer): Try to avoid multiplication overflow when + calculating the number of basic ticks that have elapsed. Try to + handle armed and unarmed counters correctly. + (_tme_am9513_bus_cycle): Now load and arm counters correctly. + (tme_ic_am9513_new): Calculate the number of basic ticks in a + millisecond for the benefit of the timer thread. + + * ic/m68k/m68010.c (_tme_m68010_rte): tme_m68k_rte_finish no longer + touches the sequence at all, so before calling it make sure the + sequence is exactly what it's supposed to be. + + * ic/m68k/m68k-execute.c: In the fast executor, assert that the ITLB + entry allows fast reading for the current PC or that the PC is one + greater than the last address covered by the entry. Fixed the + fast-fetch-failed code to more correctly simulate a group 0 exception + and associated RTE. + + * ic/m68k/m68k-insns-auto.sh: Cleaned up and fixed the code generated + for cmpm, addx, and subx. At least, cmpm wasn't getting its address + registers postincremented, and addx and subx weren't treating the Z + flag properly. In the fetch insns, take the address to fetch from as + an argument, instead of using the real ic->tme_m68k_ireg_pc with + tme_m68k_read (which could actually update it, if recovering from a group 0 exception!) - * ic/m68k/m68k-misc-auto.sh: The slow-executor fetch macros now call the fetch insns with the - PC to fetch from. + * ic/m68k/m68k-misc-auto.sh: The slow-executor fetch macros now call + the fetch insns with the PC to fetch from. - * ic/m68k/m68k-misc.c (tme_m68k_rte_finish): No longer do anything with the sequence - at all, just redispatch it. - (tme_m68k_sequence_fill): Now set the sequence next-transfer to - one, to force a restart in case later code doesn't. - (tme_m68k_insn_buffer_xfer): The insn buffer is kept in host - byte order, not big-endian byte order. - - * libtme/threads-sjlj.c: No longer track and relock a mutex that was held when - tme_sjlj_cond_wait_yield was called; the thread itself - will relock the mutex when it is restarted. - - * machine/sun2/Makefile.am: Now build and link against the Multibus and BSD libraries. - * machine/sun2/sun2-test.c (tme_memdup): Added. - (connect_elements): Now start the new convention of initializing - the new-connections lists to NULL and letting the new-connections - functions add elements incrementally. + * ic/m68k/m68k-misc.c (tme_m68k_rte_finish): No longer do anything + with the sequence at all, just redispatch it. + (tme_m68k_sequence_fill): Now set the sequence next-transfer to one, + to force a restart in case later code doesn't. + (tme_m68k_insn_buffer_xfer): The insn buffer is kept in host byte + order, not big-endian byte order. + + * libtme/threads-sjlj.c: No longer track and relock a mutex that was + held when tme_sjlj_cond_wait_yield was called; the thread itself will + relock the mutex when it is restarted. + + * machine/sun2/Makefile.am: Now build and link against the Multibus + and BSD libraries. + + * machine/sun2/sun2-test.c (tme_memdup): Added. + (connect_elements): Now start the new convention of initializing the + new-connections lists to NULL and letting the new-connections + functions add elements incrementally. (main): Now create the ec0 and bpf0 elements and add them to the - machine. + machine. - * tme/common.h: Added a macro for tme_dup and a prototype for tme_memdup. - * tme/connection.h: Now define TME_CONNECTION_ETHERNET. - * tme/threads.h: Fixed a bug where the tme_thread_write macro was defined to - be the read syscall. + * tme/common.h: Added a macro for tme_dup and a prototype for + tme_memdup. - * tme/generic/Makefile.am: Added support for new components. - * tme/generic/ethernet.h: Added. + * tme/connection.h: Now define TME_CONNECTION_ETHERNET. + + * tme/threads.h: Fixed a bug where the tme_thread_write macro was + defined to be the read syscall. Tue Apr 29 20:28:05 2003 Matthew Fredette - * AUTHORS: Added. - * COPYING: Added. - * NEWS: Added. - * README: Added. - * generic/bus-device.c: In all connections_new functions, add the new connection - possibilities to the list rooted at *_conns, instead of - always replacing the list. - - * generic/bus-el.c: In all connections_new functions, add the new connection - possibilities to the list rooted at *_conns, instead of - always replacing the list. - - * generic/bus-el.c: Changes to silence -Wuninitialized. - * generic/serial.c: Removed all instances of gen- in comments. - * host/posix/posix-memory.c: Changes to silence -Wuninitialized. - * host/posix/posix-serial.c: In all connections_new functions, add the new connection - possibilities to the list rooted at *_conns, instead of - always replacing the list. - - * host/posix/posix-serial.c (_tme_posix_serial_th_reader): Fixed bugs in scanning the input - for various escape-like sequences, especially for the escaped - break signal. + * AUTHORS: + * COPYING: + * NEWS: + * README: Added. + + * generic/bus-device.c generic/bus-el.c host/posix/posix-serial.c + ic/z8530.c ic/m68k/m68k-misc.c machine/sun2/sun2-mainbus.c: + + In all connections_new functions, add the new connection + possibilities to the list rooted at *_conns, instead of always + replacing the list. + + * generic/bus-el.c host/posix/posix-memory.c ic/am9513.c + ic/m68k/m68k-execute.c ic/m68k/m68k-insns-auto.sh + ic/m68k/m68k-insns.c machine/sun2/sun2-mainbus.c: - * host/posix/posix-serial.c (_tme_posix_serial_th_reader): Simplified the code that decides - to call out that we are readable. + Changes to silence -Wuninitialized. + + * generic/serial.c: + * tme/generic/serial.h: Removed all instances of gen- in comments. + + * host/posix/posix-serial.c (_tme_posix_serial_th_reader): Fixed bugs + in scanning the input for various escape-like sequences, especially + for the escaped break signal. + + * host/posix/posix-serial.c (_tme_posix_serial_th_reader): Simplified + the code that decides to call out that we are readable. (_tme_posix_serial_ctrl): Always try to call out reads if the - connection says it's readable, even if we already knew that. - (_tme_posix_serial_read): Fixed a bug where we would clear - everything *except* TME_SERIAL_CTRL_OK_READ, instead of clearing - only that bit. - (tme_host_posix_serial_new): Return EINVAL on bad arguments. - - * ic/Makefile.am: Now define DIST_SUBDIRS. - * ic/am9513.c: Changes to silence -Wuninitialized. - * ic/z8530.c: In all connections_new functions, add the new connection - possibilities to the list rooted at *_conns, instead of - always replacing the list. - - * ic/z8530.c (_tme_z8530_callout): Fixed a bug where we would use an uninitialized - chan variable to find WR9, which actually only exists in channel A - anyways. + connection says it's readable, even if we already knew that. + (_tme_posix_serial_read): Fixed a bug where we would clear everything + *except* TME_SERIAL_CTRL_OK_READ, instead of clearing only that bit. + (tme_host_posix_serial_new): Return EINVAL on bad arguments. + + * ic/Makefile.am: Now define DIST_SUBDIRS. + + * ic/z8530.c (_tme_z8530_callout): Fixed a bug where we would use an + uninitialized chan variable to find WR9, which actually only exists in + channel A anyways. (_tme_z8530_ctrl): Now always try to call out reads if the connection - says it's readable. + says it's readable. + + * libtme/threads-sjlj.c: Wrap all of the rwlock operations in + !TME_NO_DEBUG_LOCKS. + (tme_sjlj_threads_run): Changes to silence -Wuninitialized. - * ic/m68k/m68k-execute.c: Changes to silence -Wuninitialized. - * ic/m68k/m68k-insns-auto.sh: Changes to silence -Wuninitialized. - * ic/m68k/m68k-insns.c: Changes to silence -Wuninitialized. - * ic/m68k/m68k-misc.c: In all connections_new functions, add the new connection - possibilities to the list rooted at *_conns, instead of - always replacing the list. - - * libtme/threads-sjlj.c: Wrap all of the rwlock operations in !TME_NO_DEBUG_LOCKS. - (tme_sjlj_threads_run): Changes to silence -Wuninitialized. - - * machine/sun2/sun2-mainbus.c: In all connections_new functions, add the new connection - possibilities to the list rooted at *_conns, instead of - always replacing the list. - - * machine/sun2/sun2-mainbus.c: Changes to silence -Wuninitialized. - * tme/Makefile.am: Now install roughly the correct files into the correct place. - * tme/atomics.h: Fixed a bug where TME_ATOMIC_POINTER_TYPE was adding an extra *. - * tme/element.h: Fixed bugs in the TME_NO_LOG versions of TME_LOG_X and TME_LOG_FINISH. - * tme/generic/Makefile.am: Now install roughly the correct files into the correct place. - * tme/generic/serial.h: Removed all instances of gen- in comments. + * tme/Makefile.am: + * tme/generic/Makefile.am: Now install roughly the correct files into + the correct place. -Tue Apr 29 02:47:30 2003 Matthew Fredette + * tme/atomics.h: Fixed a bug where TME_ATOMIC_POINTER_TYPE was adding + an extra *. - * TODO: Updated. - * generic/bus-device.c: Support the new generic bus signal interface. + * tme/element.h: Fixed bugs in the TME_NO_LOG versions of TME_LOG_X + and TME_LOG_FINISH. + +Tue Apr 29 03:24:17 2003 Matthew Fredette + + * TODO: + * machine/sun2/sun2-test.c: Updated. + + * generic/bus-device.c: Support the new generic bus signal interface. (tme_bus_device_connection_score): (tme_bus_device_connection_make): - (tme_bus_device_connection_break): These are now public. + (tme_bus_device_connection_break): These are now public. - * generic/bus-el.c: Added support for the new generic bus signal interface. - (_tme_bus_line_raise): Removed. + * generic/bus-el.c: Added support for the new generic bus signal + interface. + (_tme_bus_line_raise): Removed. (_tme_bus_signal): - (_tme_bus_intack): Added. + (_tme_bus_intack): Added. - * generic/serial.c: Removed all uses of TME_ATOMIC. - (tme_serial_buffer_copyout): Fixed a bug where we would - overwrite data_flags with -1 early, resulting in our - returning no data. + * generic/serial.c: Removed all uses of TME_ATOMIC. + (tme_serial_buffer_copyout): Fixed a bug where we would overwrite + data_flags with -1 early, resulting in our returning no data. - * host/posix/posix-serial.c: Too much work to go into detail. Everything is at least - sketched out. + * host/posix/posix-serial.c: Too much work to go into detail. + Everything is at least sketched out. * ic/am9513.c (_tme_am9513_callout): - (_tme_am9513_th_timer): Added. - (_tme_am9513_bus_cycle): Now properly handle the - Clear Toggle Output command, and log it correctly. - Lock the new mutex on entry, call _tme_am9513_callout - if needed before exit, and unlock the mutex on exit. - (tme_ic_am9513_new): Start the new timer thread. + (_tme_am9513_th_timer): Added. + (_tme_am9513_bus_cycle): Now properly handle the Clear Toggle Output + command, and log it correctly. Lock the new mutex on entry, call + _tme_am9513_callout if needed before exit, and unlock the mutex on + exit. + (tme_ic_am9513_new): Start the new timer thread. * ic/z8530.c: Too many changes to go into detail. Highlights include - a real bus cycle handler, real channels, real serial - connections, real threads. Everything seems to be at - least sketched out. - - * ic/z8530reg.h: Added. - * ic/m68k/m68k-execute.c: Fixed a bug where we were using the return value of - tme_mutex_trylock as a truth value. - - * ic/m68k/m68k-misc.c: Changed to support the new generic bus signal interface - and the new m68k bus interrupt interface. - - * libtme/threads-sjlj.c (tme_sjlj_threads_run): Fixed a bug where we wouldn't lock - the mutex before returning from a condition wait. Fixed - a bug where we would block in select(2) instead of calling - it with a zero timeout. - (tme_sjlj_cond_wait_yield): Remember the mutex the thread - had locked so it can be relocked when the thread resumes. - (tme_sjlj_select_yield): Fixed bugs where we would treat - the nfds argument as the maximum fd, instead of the maximum - fd plus one. Fixed a bug where we couldn't handle NULL - descriptor sets. + a real bus cycle handler, real channels, real serial connections, real + threads. Everything seems to be at least sketched out. + + * ic/z8530reg.h: Added. + + * ic/m68k/m68k-execute.c: Fixed a bug where we were using the return + value of tme_mutex_trylock as a truth value. + + * ic/m68k/m68k-misc.c: Changed to support the new generic bus signal + interface and the new m68k bus interrupt interface. + + * libtme/threads-sjlj.c (tme_sjlj_threads_run): Fixed a bug where we + wouldn't lock the mutex before returning from a condition wait. Fixed + a bug where we would block in select(2) instead of calling it with a + zero timeout. + (tme_sjlj_cond_wait_yield): Remember the mutex the thread had locked + so it can be relocked when the thread resumes. + (tme_sjlj_select_yield): Fixed bugs where we would treat the nfds + argument as the maximum fd, instead of the maximum fd plus one. Fixed + a bug where we couldn't handle NULL descriptor sets. (tme_sjlj_read_yield): (tme_sjlj_write_yield): (tme_sjlj_read_yield): (tme_sjlj_rwlock_init): (tme_sjlj_rwlock_lock): - (tme_sjlj_rwlock_unlock): Added. + (tme_sjlj_rwlock_unlock): Added. - * machine/sun2/sun2-impl.h: Now track the interrupts asserted in the system, and the - last ipl asserted to the CPU. + * machine/sun2/sun2-impl.h: Now track the interrupts asserted in the + system, and the last ipl asserted to the CPU. * machine/sun2/sun2-mainbus.c (_tme_sun2_line_reset): (_tme_sun2_line_halt): - (_tme_sun2_line_interrupt): Removed. + (_tme_sun2_line_interrupt): Removed. (_tme_sun2_bus_signal): - (_tme_sun2_bus_intack): Added. - (_tme_sun2_power): Use the generic bus signal interface - to reset everything. - (tme_machine_sun2_clock_new): Store how the Am9513 output - pins are connected to bus interrupt lines. - - * machine/sun2/sun2-mmu.c (_tme_sun2_multibus_fault_handler): Added a hack to avoid - an mbmem bus error when accessed through virtual 0xffffffff, - which apparently happens in the PROM NMI routine when it - polls the keyboard, even if it didn't probe a keyboard. - - * machine/sun2/sun2-test.c: Updated. - * tme/element.h: Fixed various const to _tme_const. - * tme/threads.h: Redid the setjmp/longjmp rwlock operations. - Added various new function prototypes and macros. - - * tme/generic/bus-device.h: Support the new generic bus signal interface. - The tme_bus_device_connection_score, tme_bus_device_connection_make, - and tme_bus_device_connection_break functions are now public. - Fixed a const to _tme_const. - - * tme/generic/bus.h: Added the new generic bus signal and interrupt acknowledge - interfaces. Fixed various const to _tme_const. - - * tme/generic/serial.h: Now define TME_SERIAL_CTRL_OK_READ. - Removed the write method from a serial connection. All - data transfer happens with reads, with control signals - to indicate when reads are OK. - Removed the TME_ATOMIC use in struct tme_serial_buffer. + (_tme_sun2_bus_intack): Added. + (_tme_sun2_power): Use the generic bus signal interface to reset + everything. + (tme_machine_sun2_clock_new): Store how the Am9513 output pins are + connected to bus interrupt lines. + + * machine/sun2/sun2-mmu.c (_tme_sun2_multibus_fault_handler): Added a + hack to avoid an mbmem bus error when accessed through virtual + 0xffffffff, which apparently happens in the PROM NMI routine when it + polls the keyboard, even if it didn't probe a keyboard. + + * tme/element.h: Fixed various const to _tme_const. + + * tme/threads.h: Redid the setjmp/longjmp rwlock operations. Added + various new function prototypes and macros. + + * tme/generic/bus-device.h: Support the new generic bus signal + interface. The tme_bus_device_connection_score, + tme_bus_device_connection_make, and tme_bus_device_connection_break + functions are now public. Fixed a const to _tme_const. + + * tme/generic/bus.h: Added the new generic bus signal and interrupt + acknowledge interfaces. Fixed various const to _tme_const. + + * tme/generic/serial.h: Now define TME_SERIAL_CTRL_OK_READ. Removed + the write method from a serial connection. All data transfer happens + with reads, with control signals to indicate when reads are OK. + Removed the TME_ATOMIC use in struct tme_serial_buffer. (tme_serial_buffer_is_empty): - (tme_serial_buffer_is_full): Added. + (tme_serial_buffer_is_full): Added. + + * tme/ic/am9513.h: struct tme_am9513_socket now holds the basic clock + provided to the chip, and a mapping of its output pins to bus signals. + Fixed a const to _tme_const. - * tme/ic/am9513.h: struct tme_am9513_socket now holds the basic clock provided - to the chip, and a mapping of its output pins to bus signals. - Fixed a const to _tme_const. - - * tme/ic/m68k.h: Now define some m68k IPL constant macros. - Add the new m68k bus interrupt method. - Fixed various const to _tme_const. - - * tme/ic/z8530.h: Made the channel letters lowercase in structure member names. - Fixed a const to _tme_const. - -Sat Apr 26 21:14:29 2003 Matthew Fredette - - * Makefile.am: Added. - * TODO: Added. - * configure.in: Added. - * bus/Makefile.am: Updated. - * bus/bus-device.c: Removed. - * bus/bus.c: Removed. - * generic/Makefile.am: Added. - * generic/bus-device.c: Added. - * generic/bus-el.c: Added. - * generic/bus.c: Added. - * generic/serial.c: Added. - * host/posix/Makefile.am: Updated. - * host/posix/memory.c: Renamed to posix-memory.c. - * host/posix/posix-memory.c: Added. - * host/posix/posix-serial.c: Added. - * ic/am9513.c: Added. - * ic/z8530.c: Added. - * ic/i386/i386-decode.c: Added. - * ic/i386/i386-misc-auto-make.sh: Added. - * ic/i386/i386-opmaps-make.sh: Added. - * ic/i386/i386-save.c: Added. - * ic/i386/i386-uinsns-auto-make.sh: Added. - * ic/i386/i386-uinsns.c: Added. - * ic/i386/i386.h: Added. - * ic/m68k/Makefile.am: Updated. - * ic/m68k/m68k-execute.c: Under _TME_M68K_EXECUTE_FAST, at the beginning of each - instruction we do have to check if our ITLB has been invalidated, - as it might have been by some random (control) memory cycle - we just did. - Fixed bugs in the predecrement and postincrement EA handlers. - - * ic/m68k/m68k-impl.h: Now include . - * ic/m68k/m68k-impl.h: Added support for logging. - * ic/m68k/m68k-insns-auto.sh: Fixed a serious movem bug where we would start at bit 1 - in the mask, and not bit 0. - In all memory transfer functions, log the transfer. - Made the bus cycle functions "work correctly". - Fixed bugs in the generated divide instructions. + * tme/ic/m68k.h: Now define some m68k IPL constant macros. Add the + new m68k bus interrupt method. Fixed various const to _tme_const. - * ic/m68k/m68k-insns.c (tme_m68k_swap): Fixed a bug where this wouldn't work on - big-endian systems. + * tme/ic/z8530.h: Made the channel letters lowercase in structure + member names. Fixed a const to _tme_const. + +Sat Apr 26 21:46:16 2003 Matthew Fredette + + * Makefile.am TODO configure.in generic/Makefile.am + generic/bus-device.c generic/bus-el.c generic/bus.c generic/serial.c + host/posix/posix-memory.c host/posix/posix-serial.c ic/am9513.c + ic/z8530.c ic/i386/i386-decode.c ic/i386/i386-misc-auto-make.sh + ic/i386/i386-opmaps-make.sh ic/i386/i386-save.c + ic/i386/i386-uinsns-auto-make.sh ic/i386/i386-uinsns.c + ic/i386/i386.h tme/generic/Makefile.am tme/generic/bus-device.h + tme/generic/bus.h tme/generic/ic.h tme/generic/serial.h + tme/ic/am9513.h tme/ic/z8530.h: + + Added. + + * bus/Makefile.am host/posix/Makefile.am ic/m68k/Makefile.am + machine/Makefile.am machine/sun/Makefile.am machine/sun2/Makefile.am + machine/sun2/sun2-test.c: + + Updated. + + * bus/bus-device.c bus/bus.c tme/bus-device.h tme/bus.h tme/ic.h: + + Removed. + + * host/posix/memory.c: Renamed to posix-memory.c. + + * ic/m68k/m68k-execute.c: Under _TME_M68K_EXECUTE_FAST, at the + beginning of each instruction we do have to check if our ITLB has been + invalidated, as it might have been by some random (control) memory + cycle we just did. + Fixed bugs in the predecrement and postincrement EA handlers. + + * ic/m68k/m68k-impl.h: + * machine/sun2/sun2-impl.h: Now include . + + * ic/m68k/m68k-impl.h: Added support for logging. + + * ic/m68k/m68k-insns-auto.sh: Fixed a serious movem bug where we would + start at bit 1 in the mask, and not bit 0. + In all memory transfer functions, log the transfer. Made the bus + cycle functions "work correctly". Fixed bugs in the generated divide + instructions. + + * ic/m68k/m68k-insns.c (tme_m68k_swap): Fixed a bug where this + wouldn't work on big-endian systems. (tme_m68k_link): - (tme_m68k_unlk): Fixed serious bugs where we simply didn't - do what these instructions are supposed to do. + (tme_m68k_unlk): Fixed serious bugs where we simply didn't do what + these instructions are supposed to do. - * ic/m68k/m68k-iset.txt: On the 68010 and up, the move_from_sr and move_from_ccr - instructions don't read memory before writing it. - Fixed bugs in the encoding of the register bit-shifting - with a register count instructions. - - * ic/m68k/m68k-misc.c (tme_m68k_idle): Use the renamed tme_cond_wait_yield function. - (tme_m68k_new): Store the element in the IC. - (tme_m68k_go_slow): Use the TME_M68K_TLB_OK_FAST_READ to check - for a bad TLB entry. - (tme_m68k_exception_process): Don't insist on there being - exceptions to process. CPU-specific exception processors - may handle them all, yet still use this function to redispatch. - (_tme_m68k_execute_hook): Added. + * ic/m68k/m68k-iset.txt: On the 68010 and up, the move_from_sr and + move_from_ccr instructions don't read memory before writing it. Fixed + bugs in the encoding of the register bit-shifting with a register + count instructions. + + * ic/m68k/m68k-misc.c (tme_m68k_idle): Use the renamed + tme_cond_wait_yield function. + (tme_m68k_new): Store the element in the IC. + (tme_m68k_go_slow): Use the TME_M68K_TLB_OK_FAST_READ to check for a + bad TLB entry. + (tme_m68k_exception_process): Don't insist on there being exceptions + to process. CPU-specific exception processors may handle them all, + yet still use this function to redispatch. + (_tme_m68k_execute_hook): Added. * libtme/threads-sjlj.c (_tme_sjlj_then): (_tme_sjlj_timeout): (tme_sjlj_sleep_yield): - (tme_sjlj_select_yield): Added. - (tme_sjlj_threads_run): Cleaned up the threads dispatcher to - support threads waiting on classic select(2) fd sets, - (tme_sjlj_cond_wait_yield): Renamed from tme_sjlj_cond_wait. - (tme_sjlj_sleep): This function no longer yields. - - * machine/Makefile.am: Updated. - * machine/sun/Makefile.am: Updated. - * machine/sun/sun-mmu.c: Added some logging. - Disabled the explicit SEGINV support, for now. It appears that - the hardware MMU doesn't have a notion of an invalid PMEG. - Now call the post-MMU TLB fillers with the PTE struct and the - virtual address. - - * machine/sun2/Makefile.am: Updated. - * machine/sun2/sun2-control.c (_tme_sun2_control_cycle_handler): Don't bother to fill the - segmap register unless this is a read. - - * machine/sun2/sun2-impl.h: Now include . - * machine/sun2/sun2-impl.h: Now include . - Added some support for logging. + (tme_sjlj_select_yield): Added. + (tme_sjlj_threads_run): Cleaned up the threads dispatcher to support + threads waiting on classic select(2) fd sets, + (tme_sjlj_cond_wait_yield): Renamed from tme_sjlj_cond_wait. + (tme_sjlj_sleep): This function no longer yields. + + * machine/sun/sun-mmu.c: Added some logging. + Disabled the explicit SEGINV support, for now. It appears that the + hardware MMU doesn't have a notion of an invalid PMEG. Now call the + post-MMU TLB fillers with the PTE struct and the virtual address. + + * machine/sun2/sun2-control.c (_tme_sun2_control_cycle_handler): Don't + bother to fill the segmap register unless this is a read. - * machine/sun2/sun2-mainbus.c: Added some support for logging. + * machine/sun2/sun2-impl.h: Now include . Added + some support for logging. + + * machine/sun2/sun2-mainbus.c: Added some support for logging. (tme_machine_sun2_clock_new): - (tme_machine_sun2_zs_new): Added. + (tme_machine_sun2_zs_new): Added. * machine/sun2/sun2-mmu.c: Too much to go into detail. Highlights: - Added some logging support. - Made the bus error behavior more correct. On the sun2, - obio and obmem don't generate bus errors. Now the post-MMU - TLB filler takes the original PTE entry and the original - virtual address. - - * machine/sun2/sun2-test.c: Updated. - * tme/bus-device.h: Removed. - * tme/bus.h: Removed. - * tme/connection.h: Now define TME_CONNECTION_SERIAL. - * tme/element.h: Added logging support. - * tme/ic.h: Removed. + Added some logging support. + Made the bus error behavior more correct. On the sun2, obio and obmem + don't generate bus errors. Now the post-MMU TLB filler takes the + original PTE entry and the original virtual address. + + * tme/connection.h: Now define TME_CONNECTION_SERIAL. + + * tme/element.h: Added logging support. + * tme/ic.h: Now include - * tme/threads.h: Defined more of the tme threads API. - * tme/generic/Makefile.am: Added. - * tme/generic/bus-device.h: Added. - * tme/generic/bus.h: Added. - * tme/generic/ic.h: Added. - * tme/generic/serial.h: Added. - * tme/ic/am9513.h: Added. - * tme/ic/m68k.h: Now include . - * tme/ic/z8530.h: Added. - * tme/machine/sun.h: Added support for logging. - Changed the interface to pass the whole PTE struct to the post-MMU - TLB fillers. + + * tme/threads.h: Defined more of the tme threads API. + + * tme/ic/m68k.h: Now include . + + * tme/machine/sun.h: Added support for logging. + Changed the interface to pass the whole PTE struct to the post-MMU TLB + fillers. Sat Apr 26 14:44:07 2003 Matthew Fredette - * bus/bus.c (tme_bus_cycle_xfer): Fixed a bug where we used cycle_writer to - get the reader's port size. When indexing bus router arrays, we - have to subtract out the participant's least port lane, since - the arrays don't include information for lanes not connected - to the participant. - -Wed Apr 23 19:29:33 2003 Matthew Fredette - - * bus/Makefile.am: Added. - * bus/bus-device.c: Added. - * bus/bus.c: Added. - * host/Makefile.am: Added. - * host/posix/Makefile.am: Added. - * host/posix/memory.c: Added. - * ic/Makefile.am: Added. + * bus/bus.c (tme_bus_cycle_xfer): Fixed a bug where we used + cycle_writer to get the reader's port size. When indexing bus router + arrays, we have to subtract out the participant's least port lane, + since the arrays don't include information for lanes not connected to + the participant. + +Wed Apr 23 19:31:01 2003 Matthew Fredette + + * bus/Makefile.am bus/bus-device.c bus/bus.c host/Makefile.am + host/posix/Makefile.am host/posix/memory.c ic/Makefile.am + ic/m68k/m68k-impl.h libtme/Makefile.am libtme/threads-sjlj.c + machine/sun/Makefile.am machine/sun/sun-mmu.c + machine/sun2/Makefile.am machine/sun2/sun2-control.c + machine/sun2/sun2-impl.h machine/sun2/sun2-mainbus.c + machine/sun2/sun2-mmu.c machine/sun2/sun2-test.c tme/Makefile.am + tme/atomics.h tme/bus-device.h tme/bus.h tme/common.h + tme/connection.h tme/element.h tme/ic.h tme/threads.h + tme/ic/Makefile.am tme/ic/m68k.h tme/machine/Makefile.am + tme/machine/sun.h: + + Added. + * ic/m68k/m68010.c (_tme_m68010_exception): - (_tme_m68010_rte): Added. + (_tme_m68010_rte): Added. + + * ic/m68k/m68k-bus-auto.sh: Now generates the combined input/output + bus routers. - * ic/m68k/m68k-bus-auto.sh: Now generates the combined input/output bus routers. - * ic/m68k/m68k-execute.c: Although I hate doing this, "too many changes to list." - * ic/m68k/m68k-impl.h: Added. - * ic/m68k/m68k-insns-auto.sh: Some minor copyright and cosmetic fixes. - Updated the bus cycle functions to support the latest - generic bus cycle idea. - - * ic/m68k/m68k-insns.c: Although I hate doing this, "too many changes to list." - * ic/m68k/m68k-iset-expand.pl: When the EA is an immediate, just emit the immediate information - and skip the EA information - we don't want to use the EA path - in this case. - - * ic/m68k/m68k-iset.txt: moveq is now its own insn. - * ic/m68k/m68k-misc-auto.sh: Copyright sweep. - * ic/m68k/m68k-misc.c: Although I hate doing this, "too many changes to list." - * ic/m68k/m68k-opmap-make.pl: Fixed some random bugs, and correctly handle the case where EA and - immediate operand must be undefined for a pattern, to avoid using - the EA and immediate operand in any root entry. - - * ic/m68k/m68k.h: Removed. - * libtme/Makefile.am: Added. - * libtme/threads-sjlj.c: Added. - * machine/sun/Makefile.am: Added. - * machine/sun/sun-mmu.c: Added. - * machine/sun2/Makefile.am: Added. - * machine/sun2/sun2-control.c: Added. - * machine/sun2/sun2-impl.h: Added. - * machine/sun2/sun2-mainbus.c: Added. - * machine/sun2/sun2-mmu.c: Added. - * machine/sun2/sun2-test.c: Added. - * tme/Makefile.am: Added. - * tme/atomics.h: Added. - * tme/bus-device.h: Added. - * tme/bus.h: Added. - * tme/common.h: Added. - * tme/connection.h: Added. - * tme/element.h: Added. - * tme/ic.h: Added. - * tme/threads.h: Added. - * tme/ic/Makefile.am: Added. - * tme/ic/m68k.h: Added. - * tme/machine/Makefile.am: Added. - * tme/machine/sun.h: Added. + * ic/m68k/m68k-execute.c: + * ic/m68k/m68k-insns.c: + * ic/m68k/m68k-misc.c: Although I hate doing this, "too many changes + to list." + + * ic/m68k/m68k-insns-auto.sh: Some minor copyright and cosmetic fixes. + Updated the bus cycle functions to support the latest generic bus + cycle idea. + + * ic/m68k/m68k-iset-expand.pl: When the EA is an immediate, just emit + the immediate information and skip the EA information - we don't want + to use the EA path in this case. + + * ic/m68k/m68k-iset.txt: moveq is now its own insn. + + * ic/m68k/m68k-misc-auto.sh: Copyright sweep. + + * ic/m68k/m68k-opmap-make.pl: Fixed some random bugs, and correctly + handle the case where EA and immediate operand must be undefined for a + pattern, to avoid using the EA and immediate operand in any root + entry. + + * ic/m68k/m68k.h: Removed. Sun Apr 20 21:33:05 2003 Matthew Fredette - * ic/m68k/m68k-bus-auto.sh: Added. + * ic/m68k/m68k-bus-auto.sh: Added. Fri Apr 18 04:56:36 2003 Matthew Fredette - * ic/m68k/m68k-insns-auto.sh: Added support for generating the moveq32 insn. - Cleaned up and fixed some bugs in the bus cycle functions. + * ic/m68k/m68k-insns-auto.sh: Added support for generating the moveq32 + insn. Cleaned up and fixed some bugs in the bus cycle functions. - * ic/m68k/m68k-misc-auto.sh: Cleaned up the set of registers that we define. - Added better locking support to the instruction fetch macros. + * ic/m68k/m68k-misc-auto.sh: Cleaned up the set of registers that we + define. Added better locking support to the instruction fetch macros. Tue Apr 15 13:32:37 2003 Matthew Fredette - * ic/m68k/m68k-insns-auto.sh: Unfortunately, too much work to list in detail. Improved the - arithmetic function flag-setting code to compile well on i386 - with gcc -O2. Added many special-purpose memory read and write - functions, and finally introduced the general bus-cycle read - and write functions. Added many new instructions, including - multiply and divide. + * ic/m68k/m68k-insns-auto.sh: Unfortunately, too much work to list in + detail. Improved the arithmetic function flag-setting code to compile + well on i386 with gcc -O2. Added many special-purpose memory read and + write functions, and finally introduced the general bus-cycle read and + write functions. Added many new instructions, including multiply and + divide. Sat Apr 05 18:47:38 2003 Matthew Fredette - * machine/Makefile.am: Added. + * machine/Makefile.am: Added. -Tue Apr 01 20:13:07 2003 Matthew Fredette +Tue Apr 01 20:13:40 2003 Matthew Fredette - * ic/m68k/Makefile.am: Build decoders for the 68000, 68010, and 68020. - * ic/m68k/m68k-iset-expand.pl: Added a very basic preprocessor to support generating - different instruction sets for different CPUs. - Now whenever an instruction wants the EA, its operand - is eax.32 even if the known EA is address register indirect. + * ic/m68k/Makefile.am: Build decoders for the 68000, 68010, and 68020. + * ic/m68k/m68k-iset-expand.pl: Added a very basic preprocessor to + support generating different instruction sets for different CPUs. Now + whenever an instruction wants the EA, its operand is eax.32 even if + the known EA is address register indirect. - * ic/m68k/m68k-iset.txt: This should be the complete integer instruction set for the - 68000, 68010, 68020, and 68030. + * ic/m68k/m68k-iset.txt: This should be the complete integer + instruction set for the 68000, 68010, 68020, and 68030. - * ic/m68k/m68k-opmap-make.pl: Added comments, and reworked to support compiling instruction - sets for different CPUs together, reusing submaps and opcode - maps whenever possible. + * ic/m68k/m68k-opmap-make.pl: Added comments, and reworked to support + compiling instruction sets for different CPUs together, reusing + submaps and opcode maps whenever possible. - * ic/m68k/m68k.h: Before the -impl.h split. + * ic/m68k/m68k.h: Before the -impl.h split. Sun Mar 30 22:04:15 2003 Matthew Fredette - * ic/m68k/Makefile.am: Added. - * ic/m68k/m68010.c: Added. - * ic/m68k/m68k-execute.c: Added. - * ic/m68k/m68k-insns-auto.sh: Added. - * ic/m68k/m68k-insns.c: Added. - * ic/m68k/m68k-iset-expand.pl: Added. - * ic/m68k/m68k-iset.txt: Added. - * ic/m68k/m68k-misc-auto.sh: Added. - * ic/m68k/m68k-misc.c: Added. - * ic/m68k/m68k-opmap-make.pl: Added. - * ic/m68k/m68k.h: Added. - -Sun Mar 30 22:04:15 2000 Matthew Fredette + * ic/m68k/Makefile.am ic/m68k/m68010.c ic/m68k/m68k-execute.c + ic/m68k/m68k-insns-auto.sh ic/m68k/m68k-insns.c + ic/m68k/m68k-iset-expand.pl ic/m68k/m68k-iset.txt + ic/m68k/m68k-misc-auto.sh ic/m68k/m68k-misc.c + ic/m68k/m68k-opmap-make.pl ic/m68k/m68k.h: - * Dummy entry. + Added.