--- tme/ChangeLog 2018/04/24 16:37:52 1.1.1.2 +++ tme/ChangeLog 2018/04/24 16:39:15 1.1.1.3 @@ -1,3 +1,996 @@ +Sun May 15 01:24:11 2005 Matthew Fredette + + * Release 0.4 out. + + * configure.in: Fixed a bug where StaticGray, StaticColor, and + PseudoColor visuals would be considered indexed. This would cause the + translation functions to incorrectly try to map intensities into pixel + subfields. + +Sat May 14 22:28:29 2005 Matthew Fredette + + * 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.