|
|
1.1.1.4 ! root 1: Thu Sep 06 23:35:41 2007 Matthew Fredette <[email protected]> ! 2: ! 3: * Release 0.6 out. ! 4: ! 5: * TODO: Updated. ! 6: ! 7: * ic/ncr53c9x.c: Fixed some comments. ! 8: (_tme_ncr53c9x_scsi_cycle): When we transfer in from the SCSI bus, if ! 9: we need to detect the the transfer residual based on the data ! 10: transferred, try to update the transfer residual. ! 11: ! 12: * machine/sun4/sun44c-mmu.c (_tme_sun44c_buserr_common): A bus error ! 13: that is asynchronous for the CPU isn't reported as a hard fault to the ! 14: CPU, but if the initiator is another bus master, it is reported to ! 15: that master as a hard fault. ! 16: ! 17: * scsi/scsi-tape.c (tme_scsi_tape_cdb_xfer0): In the NetBSD PR ! 18: pkg/34536 hack, only clear the Illegal Length Indicator (ILI) flag. ! 19: More importantly, this preserves the filemark flag, which is needed ! 20: for SunOS tape installs to work. ! 21: ! 22: Sun Aug 26 14:02:04 2007 Matthew Fredette <[email protected]> ! 23: ! 24: * configure.in: Bumped version to 0.6. ! 25: Now check for the alignment of long, when it's 64 bits. Added support ! 26: for sun4 systems. ! 27: ! 28: * ic/ieee754/ieee754-precision.sh: Added some missing ${prefix}es to ! 29: the variable names in the precision-independent statements. ! 30: ! 31: Sat Aug 25 23:12:31 2007 Matthew Fredette <[email protected]> ! 32: ! 33: * generic/fb.c (_tme_fb_xlat_colors_get_set): If the colors that the ! 34: destination framebuffer needs to allocate don't depend on the source ! 35: framebuffer, return a colorset signature that destination framebuffers ! 36: can use to avoid reallocating the same set of colors repeatedly. When ! 37: the number of colors to allocate is clearly more than the destination ! 38: could ever allocate, and source pixels are mapped to intensities, ! 39: remove some of the less significant bits of the source intensities to ! 40: reduce the number of colors needed. Now give a distinct pixel value ! 41: for each distinct color we ask for, especially when we're asking for a ! 42: lot of duplicate colors as the result of reducing the range of the ! 43: source intensities (see above). ! 44: ! 45: * host/gtk/gtk-display.c (_tme_gtk_display_menu_radio): Added. ! 46: ! 47: * host/gtk/gtk-screen.c (_tme_gtk_screen_mode_change): Now only ! 48: reallocate the GdkImage when the framebuffer size changes, and the ! 49: colors when the final mapping from source color to destination pixel ! 50: changes. When allocating colors, now only allocate distinct colors. ! 51: (_tme_gtk_screen_submenu_scaling): Added. ! 52: (_tme_gtk_screen_new): Now use _tme_gtk_display_menu_radio() to create ! 53: the scaling submenu. ! 54: ! 55: * ic/i825x6.c: Added a union to fix an aliasing problem with ! 56: TME_I825X6_RX_BUFFER_NEXT(). From [email protected]. ! 57: (_tme_i825x6_rx_buffers_add): Now busy a TLB before checking if it's ! 58: valid and useful, and unbusy it for filling if it's not. After ! 59: filling it, loop to busy and check it again. When we're done with the ! 60: TLB entry, unbusy it. ! 61: (_tme_i825x6_callout_ca): When the receive unit is being started, ! 62: always abort it first, unless it was already idle. Before, we ! 63: wouldn't abort it if it was out of resources, which was wrong since ! 64: it's possible to run out of receive frame descriptors but not receive ! 65: buffers. ! 66: (_tme_i825x6_callout_cu): Don't abort() for a DIAGNOSE command. From ! 67: [email protected] in NetBSD PR pkg/35305. ! 68: (_tme_i825x6_signal): Don't assume that xor-ing the level out of the ! 69: signal value leaves only the base signal; use TME_BUS_SIGNAL_WHICH() ! 70: instead. ! 71: (_tme_i825x6_read): Keep track of the transmit packet's size in a new ! 72: variable, since the DMA read and write helper macros destroy rc. From ! 73: [email protected] in NetBSD PR pkg/35305. ! 74: ! 75: * ic/z8530.c (_tme_z8530_channel_reset): On a hardware reset, clear ! 76: the IUS bits and reset RR2. Now take a pointer to the structure for ! 77: the whole chip, since some registers are common to both channels. All ! 78: callers changed. ! 79: (_tme_z8530_channel_init): Now take a pointer to the structure for the ! 80: whole chip, since some registers are common to both channels. All ! 81: callers changed. ! 82: (_tme_z8530_rr0_update): Fixed a bug where we would use the RR15 value ! 83: where we meant to use the WR15 value. ! 84: (_tme_z8530_rr2_update): ! 85: (_tme_z8530_int_pending): Added. ! 86: (_tme_z8530_intack): Now use _tme_z8530_int_pending() to see if an ! 87: interrupt is pending, and call _tme_z8530_rr2_update() to update RR2 ! 88: and get the vector to use. Now check a socket flag to see if the IEI ! 89: pin is tied low. ! 90: (_tme_z8530_callout): Now use _tme_z8530_int_pending() to see if an ! 91: interrupt is pending. ! 92: (_tme_z8530_bus_cycle): When an interrupt is acknowledged, call ! 93: _tme_z8530_rr2_update() to update RR2. ! 94: ! 95: * ic/m68k/m6888x-auto.sh: No longer use the IEEE754 sub function to ! 96: implement fcmp, use a specific m6888x function instead. ! 97: ! 98: * ic/m68k/m6888x.c (tme_m68k_fpgen): Fixed a bug where a byte or word ! 99: source operand in a register would get sign-extended and stored back ! 100: into the register, destroying the other parts of the register. ! 101: (_tme_m6888x_fcmp): Added. ! 102: (tme_m68k_fmove_rm): We don't use TME_M68K_INSN_OP1(), so there's no ! 103: need to set _op1. ! 104: (tme_m68k_fmovem): Fixed a serious bug where we wouldn't advance the ! 105: effective address after storing the last 32-bit word of a register's ! 106: value. ! 107: (tme_m68k_fsave): Fixed a buffer overflow bug where we could write the ! 108: BIU flags outside of the frame structure. ! 109: ! 110: * ic/m68k/m68k-insns-auto.sh: The cmpm, addx, and subx instructions ! 111: access the source operand before the destination operand, and we had ! 112: it backwards. Now generate the wrapper functions for a move of an ! 113: address register to a predecrement or postincrement EA with that same ! 114: address register. ! 115: (tme_m68k_movem_${name}${size}): Now calculate the total size of the ! 116: transfer early, so we can correctly emulate the behavior of storing ! 117: the same address register used in a predecrement EA on the different ! 118: CPUs. ! 119: (tme_m68k_moves${size}): Now when storing the same address register ! 120: used in a predecrement EA, store the original value. The BCD math ! 121: functions can only fault when they access memory, and they must ! 122: advance an address register right after it's used, in case the same ! 123: address register is used for the other operand. ! 124: ! 125: * ic/m68k/m68k-insns.c (tme_m68k_tas): Removed the ! 126: TME_M68K_INSN_CANFAULT, since tme_m68k_rmw_start() does this if ! 127: needed. ! 128: (tme_m68k_cmp2_chk2): Fixed several bugs. From [email protected] in ! 129: NetBSD PR pkg/33969. ! 130: ! 131: * ic/m68k/m68k-iset-expand.pl: As a special exception, expand a move ! 132: instruction that moves an address register into a predecrement or ! 133: postincrement EA with the same address register, to use a move wrapper ! 134: function. ! 135: ! 136: * ic/m68k/m68k-iset.txt: Fixed a bug in decoding cas instructions - ! 137: their size field actually doesn't work like any other. ! 138: ! 139: * ic/m68k/m68k-misc.c (tme_m68k_go_slow): Only make the first and last ! 140: valid fast pointers from the TLB entry if it supports fast reading. ! 141: (tme_m68k_rmw_start): Fixed a bug where we would mark an instruction ! 142: as possibly faulting, even when we wouldn't make any normal bus cycle ! 143: calls. ! 144: Corrected a byteswapping macro. ! 145: (tme_m68k_rmw_finish): Corrected a byteswapping macro. ! 146: ! 147: * ic/m68k/m68k-opmap-make.pl: Now recognize the ! 148: move-same-address-register-to-predecrement and -postincrement ! 149: functions wherever the move function is recognized. ! 150: ! 151: * libtme/threads-sjlj.c: In struct tme_sjlj_thread, when GTK is in use ! 152: track the current timeout handle, and have space for some fixed ! 153: timeout handles. We no longer track a single timeout tag, since ! 154: removing a timeout that hasn't fired yet may not prevent it from ! 155: firing. Now, for each file descriptor, track a different thread for ! 156: each file descriptor condition. ! 157: (tme_sjlj_threads_init): Initialize the file descriptor condition to ! 158: threads mapping. ! 159: (tme_sjlj_dispatch_timeout) [HAVE_GTK]: Now remove no longer used ! 160: timeouts when they occur naturally, and free their timeout handles. ! 161: (tme_sjlj_dispatch_fd): Now dispatch different threads depending on ! 162: the file descriptor conditions that are present. ! 163: (tme_sjlj_threads_run): Now always do a select, even if there are no ! 164: threads blocking on file descriptors. Now make a GdkInputCondition ! 165: value for each file descriptor that is ready, for ! 166: tme_sjlj_dispatch_fd(). ! 167: (tme_sjlj_thread_create) [HAVE_GTK]: Now initialize the timeout ! 168: handles. ! 169: (tme_sjlj_yield): Now correctly track a different thread for each file ! 170: descriptor condition, since there are often different threads managing ! 171: the same file descriptor. When GTK is in use, timeouts can actually ! 172: expire up to 1ms early, so account for this, and no longer try to ! 173: remove an old timeout now, since it may still fire anyways. Instead, ! 174: allocate and use another timeout handle, which will be managed by ! 175: tme_sjlj_dispatch_timeout(). ! 176: ! 177: * machine/sun/sun-obie.c (_tme_sun_obie_bus_signal): Fixed a bug where ! 178: instead of managing the INTR bit in the CSR, we were just passing the ! 179: i82586's interrupt signal through to the mainbus. This was breaking ! 180: SunOS. Found by [email protected] in NetBSD PR pkg/35305. Now also ! 181: pass a reset signal from obio up to the i82586. ! 182: (_tme_sun_obie_connections_new): Now use _tme_sun_obie_bus_signal to ! 183: handle bus signals coming from obio. ! 184: ! 185: * scsi/emulexmt02.c (_tme_emulexmt02_cdb_mode_sense): Now use ! 186: TME_EMULEXMT02_BLOCK_SIZE instead of the hard-coded constant. ! 187: (_tme_emulexmt02_cdb_mode_select): Avoid a gcc warning about a ! 188: comparison whose result is always known due to the limited range of a ! 189: type. ! 190: (tme_scsi_tape_emulexmt02_init): Now provide the fixed block size to ! 191: the machine-independent code. ! 192: ! 193: * scsi/scsi-cdb.c (tme_scsi_device_mode_select_data): Added. ! 194: (_tme_scsi_device_make_inquiry_string): Fixed a type to get better ! 195: type agreement. From [email protected] in NetBSD PR pkg/34113. ! 196: ! 197: * scsi/scsi-tape.c (tme_scsi_tape_cdb_xfer0): Don't pad out a block ! 198: with zeroes if the filemark indication is set. ! 199: (_tme_scsi_tape_mode_select_data): ! 200: (tme_scsi_tape_cdb_mode_select): Avoid a gcc warning about a ! 201: comparison whose result is always known due to the limited range of a ! 202: type. ! 203: ! 204: * tme/generic/fb.h: Now define TME_FB_COLORSET_NONE. ! 205: ! 206: Sat Aug 25 19:52:23 2007 Matthew Fredette <[email protected]> ! 207: ! 208: * host/gtk/gtk-display.h: Now store a colorset signature in struct ! 209: tme_gtk_screen. Define struct tme_gtk_display_menu_item, and added a ! 210: prototype for _tme_gtk_display_menu_radio(). ! 211: ! 212: Fri Aug 24 01:21:50 2007 Matthew Fredette <[email protected]> ! 213: ! 214: * acinclude.m4 (AC_CHECK_ALIGNOF): Some compilers will do a smaller ! 215: read than you expect, if they know that the value read will only be ! 216: used at a smaller size later. A little math on the value read ! 217: discourages this. ! 218: (AC_CHECK_SHIFTMAX): Don't create the center value with one ! 219: expression, which would do the shifting in type int. Defeat any ! 220: constant optimizations on the shift count by using sscanf to ! 221: initialize it. ! 222: ! 223: * generic/float-auto.sh (tme_float_infinity_${_builtin_type}): ! 224: (tme_float_negative_zero_${_builtin_type}): Added. ! 225: (tme_float_radix${radix}_mantissa_exponent_${_builtin_type}): If the ! 226: value is a zero, just return the same value. Fixed a bug where we ! 227: would return a mantissa that was exactly the radix (instead of ! 228: reducing it again to 1). ! 229: ! 230: * host/posix/posix-serial.c (_tme_posix_serial_th_ctrl): If a TIOCMGET ! 231: ioctl fails, be sure to use a zero modem state instead of garbage. ! 232: ! 233: * ic/am7930.c (_tme_am7930_bus_cycle): Fixed a bug where we used ! 234: TME_BUS16_LOG2 but the device is only eight bits wide. ! 235: ! 236: * ic/ieee754/ieee754-misc-auto.sh (tme_ieee754_${precision}_value_to_builtin): ! 237: Use the new tme_float_infinity_${_builtin_type}() and ! 238: tme_float_negative_${_builtin_type}() functions to get built-in ! 239: infinities and negative zeroes. ! 240: (tme_ieee754_${precision}_value_from_builtin): Detect a negative zero ! 241: using a bit-for-bit comparison to a positive zero, since the C ! 242: equality operator may treat all zeroes as equal. Fixed a bug where ! 243: roundup in a builtin-to-integer cast would affect the conversion. ! 244: Removed an extraneous assignment to factor in the shell script. ! 245: ! 246: * ic/sparc/sparc-misc.c (tme_sparc32_dump_memory): To avoid an ! 247: assertion failure with TLB lock debugging turned on, now save, set, ! 248: and restore the busy flag on the DTLB entry that the load function ! 249: will use (assuming that it will only use one). ! 250: ! 251: * machine/sun2/sun2-mainbus.c (tme_machine_sun2,zs): Override the ! 252: default z8530 socket flags - on a sun2, the IEI lines are tied low. ! 253: ! 254: * machine/sun3/SUN3-CARRERA: Removed the "delay 10000" option from ! 255: bpf1, to speed things up in general - however it is still needed when ! 256: netbooting NetBSD, to avoid a race condition in the kernel RARP client ! 257: (when the RARP response comes back before the tsleep() starts, the ! 258: wakeup() is lost). ! 259: ! 260: * machine/sun3/sun3-mainbus.c (machine/sun3/sun3-mainbus.c): Now ! 261: propagate a reset signal from the m68k out to the busses. ! 262: ! 263: * tme/threads.h: Now include <sys/time.h>. ! 264: ! 265: * tme/generic/float.h: Added prototypes for ! 266: tme_float_infinity_${_builtin_type}() and ! 267: tme_float_negative_zero_${_builtin_type}(). ! 268: ! 269: * tme/ic/z8530.h: Started a set of socket flags, and added the ! 270: tme_z8530_socket_flags to struct tme_z8530_socket. ! 271: ! 272: * tme/machine/sun.h: In TME_SUN_Z8530_SOCKET_INIT, supply a default ! 273: value for the z8530 socket flags. ! 274: ! 275: Thu Mar 29 01:56:40 2007 Matthew Fredette <[email protected]> ! 276: ! 277: * generic/fb-xlat-auto.sh: Fixed bugs where we would use the wrong ! 278: masks with TME_FB_XLAT_MAP_LINEAR_SCALE() when we needed to scale ! 279: large intensities down into a lookup range, ! 280: ! 281: * host/posix/posix-serial.c (_tme_posix_serial_th_reader): If we get ! 282: EOF, exit the thread. ! 283: ! 284: * ic/m68k/m68k-impl.h: Keep the m68k TLB array pointers in unions with ! 285: regular bus TLB pointers, to avoid any aliasing problems when ! 286: allocating them. ! 287: ! 288: * ic/m68k/m68k-misc.c (_tme_m68k_connection_make): When allocating the ! 289: m68k TLB arrays, pass pointers to the regular bus TLB pointers in ! 290: unions in struct tme_m68k, to avoid any aliasing problems. ! 291: ! 292: * ic/sparc/sparc-execute.c (_TME_SPARC_EXECUTE_NAME): Cast a constant ! 293: to an unsigned type to silence a gcc warning. ! 294: ! 295: * ic/sparc/sparc-impl.h: Keep the sparc TLB array pointers in unions ! 296: with regular bus TLB pointers, to avoid any aliasing problems when ! 297: allocating them. ! 298: ! 299: * ic/sparc/sparc-insns-auto.sh: In the jmpl instructions, cast a ! 300: constant to an unsigned type to silence a gcc warning. ! 301: ! 302: * ic/sparc/sparc-insns.c (tme_sparc32_rdpsr): ! 303: (tme_sparc32_wrpsr): Cast constants to an unsigned type to silence a ! 304: gcc warning. ! 305: ! 306: * ic/sparc/sparc-misc.c (_tme_sparc_connection_make): When allocating ! 307: the TLB arrays, pass pointers to the regular bus TLB pointers in ! 308: unions in struct tme_sparc, to avoid any aliasing problems. ! 309: (tme_sparc32_trap): Cast a constant to an unsigned type to silence a ! 310: gcc warning. ! 311: (tme_sparc32_dump_memory): Added. ! 312: ! 313: * machine/sun/sun-fb.c (TME_SUNFB_S4_REG): Added. ! 314: (tme_bt458_omap_best): Fixed a bug where we would use the final loop ! 315: counter as the best colormap index. ! 316: (_tme_sunfb_callout): Reworked to handled failed callouts better, and ! 317: added support for calling out framebuffer interrupts. ! 318: (_tme_sunfb_callout_thread): The callout thread is now always present, ! 319: running when a condition is notified. ! 320: (tme_sunfb_memory_update): Now notify the callout thread to call out ! 321: an interrupt if one is now pending. ! 322: (tme_sunfb_bus_cycle_bt458): Now support 8-bit and 32-bit accesses. ! 323: Schedule a mode change callout whenever the colormap or overlay map ! 324: changes. Fixed bugs where we wouldn't read and write the bt458 ! 325: register set correctly. ! 326: (tme_sunfb_bus_cycle_s4): If a write covers the status register, clear ! 327: any pending interrupt. Call _tme_sunfb_callout() to make any ! 328: callouts. ! 329: (tme_sunfb_new): Initialize the callout thread condition, and create ! 330: the callout thread. ! 331: (tme_sun_cgthree): Set the correct sunfb flags for a cgthree. Fixed a ! 332: bug where we wouldn't initialize the bt458 colormap pointers to point ! 333: to the colormap. ! 334: ! 335: * machine/sun/sun-fb.h: Since the callout thread is always present, ! 336: removed the flag that marked when it was. Added flags for specifying ! 337: which byte in a 32-bit access to an 8-bit register is used. In struct ! 338: tme_sunfb now track whether or not the framebuffer interrupt is ! 339: asserted, added a condition for notifying the callout thread, and ! 340: added an alias for the first S4 basic register. ! 341: ! 342: * machine/sun/sun-keyboards.txt: Removed the acute keysym from the US ! 343: type 4 keyboard. Its definition is the same as apostrophe, and it was ! 344: causing problems on hosts that actually have acute. This is really a ! 345: bug in the keyboard emulation. ! 346: ! 347: * machine/sun4/SUN4-75: Many changes. ! 348: ! 349: * machine/sun4/sun44c-cache.c (_tme_sun44c_cache_new): Cast some ! 350: expressions in comparisons to an unsigned type, to silence a gcc ! 351: warning. ! 352: ! 353: * machine/sun4/sun44c-control.c (_tme_sun44c_control_cycle_handler): ! 354: Cast a promoted expression to an unsigned type in a ternary operator ! 355: expression to silence a gcc warning. ! 356: ! 357: * scsi/scsi-cdrom.c (tme_scsi_cdrom_cdb_read_toc): ! 358: (tme_scsi_cdrom_cdb_mode_sense): Cast some expressions to unsigned ! 359: types to silence a gcc warning. ! 360: ! 361: Sun Mar 25 21:18:50 2007 Matthew Fredette <[email protected]> ! 362: ! 363: * dist/softfloat/softfloat/bits64/softfloat.c (float128_rem): Added a ! 364: cast to get better type agreement. From [email protected] in ! 365: NetBSD PR pkg/34113. ! 366: ! 367: * generic/bus-el.c (_tme_bus_intack): Now unlock the bus before ! 368: calling a device's interrupt acknowledge function, to avoid a ! 369: deadlock. ! 370: ! 371: * ic/am7990.c (_tme_am7990_receive): Added a cast to avoid a ! 372: signed/unsigned comparison. ! 373: ! 374: Sat Mar 03 15:36:15 2007 Matthew Fredette <[email protected]> ! 375: ! 376: * host/gtk/gtk-mouse.c (_tme_gtk_mouse_mouse_event): Now discard ! 377: double- and triple-click button events, since normal button press and ! 378: release events are always generated also. ! 379: ! 380: * machine/sun/sun-cgtwo.c (_tme_suncg2_callout): Fixed a bug where we ! 381: tested the wrong variable for the mode change callout bit. ! 382: ! 383: Wed Feb 21 01:52:28 2007 Matthew Fredette <[email protected]> ! 384: ! 385: * host/bsd/bsd-bpf.c (_tme_bsd_bpf_callout): Now check that the packet ! 386: being written has a reasonable size, and that the write succeeds. ! 387: From [email protected] in NetBSD PR pkg/35305. ! 388: ! 389: * host/gtk/gtk-display.h: Changed the signedness of the ! 390: tme_gtk_screen_mouse_warp_x and tme_gtk_screen_mouse_warp_y members to ! 391: get better type agreement. From [email protected] in NetBSD PR ! 392: pkg/34113. ! 393: ! 394: * host/gtk/gtk-mouse.c: Changed some types to get better type ! 395: agreement. From [email protected] in NetBSD PR pkg/34113. ! 396: ! 397: * host/gtk/gtk-screen.c (_tme_gtk_gdkimage_scanline_pad): Removed the ! 398: if that tests for the eight-bit case. This avoids a gcc4 warning ! 399: about a possible missing return value, even though the possibility of ! 400: that was zero. ! 401: ! 402: * ic/i825x6reg.h: The size mask in an i82586 TBD is 0x3fff (it's ! 403: 0x7fff on a i82596). From [email protected] in NetBSD PR pkg/35305. ! 404: ! 405: * ic/ncr53c9x.c (_tme_ncr53c9x_stimreg_msec): Fixed a gcc4 warning. ! 406: ! 407: * ic/ieee754/ieee754-ops-auto.sh: Now perform negation by multiplying ! 408: the source operand by -1, which correctly negates 0.0 into -0.0. From ! 409: [email protected] in NetBSD PR pkg/34616. ! 410: ! 411: * ic/m68k/m68k-execute.c (_TME_M68K_EXECUTE_NAME): Simplified how ! 412: PC-relative EAs are calculated. This should fix NetBSD PR pkg/34538. ! 413: ! 414: * ic/sparc/sparc-misc.c (tme_sparc_new): Increased the instruction ! 415: burst size to 800. ! 416: (tme_sparc_do_reset): Now poison all idle type state to force the idle ! 417: type to retrain, since we may be booting a new kernel. ! 418: ! 419: * libtme/module.c (tme_module_open): Changed the signedness of ! 420: tokens_count to get better type agreement. From ! 421: [email protected] in NetBSD PR pkg/34113. ! 422: ! 423: * machine/sun/sun-si.c (_tme_sun_si_bus_cycle_regs): Fixed an ! 424: uninitialized variable bug that wasn't noticed by gcc3, because the ! 425: value was never used. From [email protected] in NetBSD PR ! 426: pkg/34113. ! 427: (tme_sun_si): Changed a type to get better type agreement. From ! 428: [email protected] in NetBSD PR pkg/34113. ! 429: ! 430: * tme/memory.h (tme_memory_atomic_pointer_write): Fixed a bug where we ! 431: tried to use a ternary operator expression as an lvalue. ! 432: ! 433: Fri Feb 16 02:50:23 2007 Matthew Fredette <[email protected]> ! 434: ! 435: * host/bsd/bsd-bpf.c (_tme_bsd_bpf_read): Fixed a bug where we would ! 436: drop packets or pass garbage packets because we weren't using ! 437: BPF_WORDALIGN() to determine the offset of the next packet. Added ! 438: code to try to detect and strip off any CRC accidentally passed up ! 439: through BPF from a host network device driver. ! 440: ! 441: * ic/m68k/m68010.c (_tme_m68010_rte): A zero returned by ! 442: tme_m68k_sequence_fill() or tme_m68k_insn_buffer_fill() also means a ! 443: format error. ! 444: ! 445: * ic/m68k/m68020.c (_tme_m68020_rte): A zero returned by ! 446: tme_m68k_sequence_fill() or tme_m68k_insn_buffer_fill() also means a ! 447: format error. ! 448: ! 449: * ic/m68k/m68k-execute.c ic/m68k/m68k-impl.h ! 450: ic/m68k/m68k-insns-auto.sh ic/m68k/m68k-insns.c ! 451: ic/m68k/m68k-misc-auto.sh ic/m68k/m68k-misc.c: ! 452: ! 453: Although I hate doing this, many changes to convert the m68k ! 454: emulation to the new TLB and memory discipline. This has mainly ! 455: affected fast instruction fetching and memory access. Fast ! 456: instruction fetches now happen directly into the instruction buffer, ! 457: with some optimizations to lessen the penalty for that. Fast ! 458: fetches are now kept entirely out of the transfer accounting, and ! 459: the functions that empty and fill the instruction buffer from an ! 460: exception frame are also simpler now. ! 461: All memory access functions now busy and unbusy a TLB entry and use ! 462: the generic memory access functions when doing fast transfers. ! 463: The tme_m68k_rmw_start() and tme_m68k_rmw_finish() are completely ! 464: changed for the new TLB discipline. All of the atomic instructions ! 465: are also completely changed. All callouts are now wrapped in ! 466: tme_m68k_callout_unlock() and tme_m68k_callout_relock(), which will ! 467: unbusy and rebusy any instruction TLB entry for the fast executor, ! 468: and poison the fast executor if that TLB entry is now invalid. ! 469: ! 470: Thu Feb 15 02:15:41 2007 Matthew Fredette <[email protected]> ! 471: ! 472: * generic/keyboard.c (_tme_keysym_state_get): ! 473: (tme_keyboard_buffer_in_macro): ! 474: (tme_keyboard_buffer_out_map): ! 475: (tme_keyboard_buffer_out_mode): ! 476: (_tme_keyboard_buffer_in2): ! 477: (_tme_keyboard_buffer_in0): Use tme_keyboard_hash_data_from_keyval() ! 478: to convert a tme_keyboard_keyval_t to a tme_hash_data_t. ! 479: ! 480: * host/gtk/gtk-keyboard.c (_tme_gtk_keyboard_x11_new): ! 481: (_tme_gtk_keyboard_key_event): Use ! 482: tme_keyboard_hash_data_from_keyval() and ! 483: tme_keyboard_hash_data_to_keyval() to convert between ! 484: tme_keyboard_keyval_t and tme_hash_data_t. ! 485: ! 486: * machine/sun/sun-bwtwo.c: Removed much code, which became the new ! 487: generic Sun framebuffer code. The remaining bwtwo code now uses this ! 488: generic support. Added support for the SBus bwtwo. ! 489: ! 490: * machine/sun/sun-cgtwo.c (_tme_suncg2_validate_bitmaps): ! 491: (_tme_suncg2_validate_pixmap): Don't attempt to translate using ! 492: unsigned longs on 64-bit hosts. ! 493: (_tme_suncg2_mode_change): Don't try to make any sense of the case ! 494: where the pixel colors don't select any bitmap. In this case, or when ! 495: multiple bitmaps seem to be selected, just display the pixmap. ! 496: ! 497: * machine/sun2/sun2-control.c (_TME_SUN2_REG_ACCESSED): Silence a ! 498: warning about comparing an unsigned quantity to be greater than or ! 499: equal to zero. This would happen on 64-bit big-endian systems, due to ! 500: their particular struct tme_ic register layout. ! 501: ! 502: * machine/sun2/sun2-mmu.c (_tme_sun2_mmu_reset): Now busy and ! 503: unbusy-fill the reset TLBs, so they are marked valid. ! 504: ! 505: * machine/sun4/sun4-impl.h: Added a prototype for _tme_sun4_reset(). ! 506: ! 507: * machine/sun4/sun4-mainbus.c (_tme_sun4_reset): Added. ! 508: (_tme_sun4_command): Now use _tme_sun4_reset() to do the reset. ! 509: (tme_machine_sun4): Fixed the usage string. ! 510: ! 511: * machine/sun4/sun44c-control.c (_tme_sun44c_control_cycle_handler): A ! 512: write to the software reset bit in the enable register clears all ! 513: other bits in the register, and now call _tme_sun4_reset() to do the ! 514: reset. ! 515: ! 516: * scsi/scsi-bus.c (_tme_scsi_bus_cycle): Skip any SCSI connection that ! 517: isn't waiting on any events and has no actions to take. ! 518: ! 519: * tme/hash.h: Added macros for converting between tme_hash_data_t and ! 520: some integral types. ! 521: ! 522: * tme/generic/ethernet.h: Define some Ethernet packet types. ! 523: ! 524: * tme/generic/keyboard.h: Added macros to convert between a keyval and ! 525: a tme_hash_data_t. ! 526: ! 527: * tme/scsi/scsi-cdb.h: Define extended sense key, ASC, and ASCQ ! 528: values. Define struct tme_scsi_device_mode_blocks and give a ! 529: prototype for tme_scsi_device_mode_select_data(). ! 530: ! 531: Mon Feb 12 23:50:36 2007 Matthew Fredette <[email protected]> ! 532: ! 533: * generic/bus.c (tme_bus_tlb_map): Fixed a word-size bug, where the ! 534: address offset was kept as a tme_bus_addr_t. Since this offset can be ! 535: negative, and it's used in pointer arithmetic, it has to be a signed ! 536: long. ! 537: ! 538: * generic/fb-xlat-auto.sh (TME_FB_XLAT_SHIFT_DST): Now detect when we ! 539: shifted a tme_uint32_t by 32 on an architecture where SHIFTMAX_INT32_T ! 540: is less than 32, and force the shifted result to zero. ! 541: ! 542: * ic/ncr5380.c (_tme_ncr5380_bus_tlb_fill): Fixed a bug where we ! 543: wouldn't notice a TLB that was invalid. ! 544: ! 545: * ic/ieee754/ieee754-misc-auto.sh (tme_ieee754_${precision}_value_builtin_set): ! 546: When rewriting x to be an infinity, don't set the float format until ! 547: the end, because we still need to test the original format x's sign. ! 548: After converting a native result to the best native format for the ! 549: IEEE754 precision, don't forget to update x's float format. ! 550: (tme_ieee754_${precision}_value_to_builtin): When the format has an ! 551: explicit integer bit, don't treat it as a fraction bit when the ! 552: exponent is the biased maximum. ! 553: ! 554: * ic/m68k/m68k-bus-auto.sh: Fixed a bug where tme_m68k_router_32 was ! 555: defined static. ! 556: ! 557: * ic/sparc/sparc-misc-auto.sh: Make sure that TME_SPARC_IREG_FPX is ! 558: aligned to four, since it is often used as a register pair, and the ! 559: ldd/std functions expect the first register of a pair (and later, some ! 560: quad load/store functions) to be aligned. ! 561: ! 562: * machine/sun/sun-si.c (_tme_sun_si_tlb_fill_regs): Fixed a bug where ! 563: we were filling TLBs that supported fast reading. We can't support ! 564: fast reading, because we have to fault on byte accesses, to support ! 565: the SunOS sc/si probes. ! 566: ! 567: Tue Jan 30 22:57:08 2007 Matthew Fredette <[email protected]> ! 568: ! 569: * ic/am7990.c (_tme_am7990_init): Now log the init. Fixed a bug where ! 570: we wouldn't start reading the Ethernet again after exiting loopback ! 571: mode. ! 572: (_tme_am7990_start): Now log the start. ! 573: (_tme_am7990_receive): Append dummy CRC bytes to each received frame. ! 574: Log receive MISS and BUFF errors. ! 575: (_tme_am7990_transmit): Log transmit BUFF errors. ! 576: (_tme_am7990_bus_cycle): Log writes to CSRs other than CSR0. ! 577: ! 578: Sun Jan 21 15:45:01 2007 Matthew Fredette <[email protected]> ! 579: ! 580: * libtme/misc.c (tme_misc_tokenize): ! 581: (_tme_misc_number_parse): Don't use the ctype macros with a char, ! 582: since it will be sign-extended to an int. ! 583: ! 584: * libtme/module.c (tme_module_open): Don't use the ctype macros with a ! 585: char, since it will be sign-extended to an int. ! 586: ! 587: * serial/serial-kb.c (tme_serial_,kb,keyboard): Don't use the ctype ! 588: macros with a char, since it will be sign-extended to an int. ! 589: ! 590: Fri Jan 19 01:01:07 2007 Matthew Fredette <[email protected]> ! 591: ! 592: * host/gtk/gtk-display.h: In struct tme_gtk_display, track the next ! 593: keysym to try in the unused keysym allocator. ! 594: ! 595: * host/gtk/gtk-keyboard.c (_tme_gtk_keyboard_lookup): Don't consider a ! 596: conversion of a string to a keysym successful unless the keysym ! 597: reverses to that same string. ! 598: Fixed a bug in the code that tries to allocate an unused keysym for an ! 599: unknown string, where we would repeatedly allocate the first unused ! 600: keysym over and over again. ! 601: ! 602: * ic/sparc/sparc-impl.h: Increased the size of the ITLB hash. ! 603: ! 604: * ic/sparc/sparc-insns-auto.sh: Now emit code in the load and store ! 605: functions to track DTLB fills under _TME_SPARC_STATS. ! 606: ! 607: * machine/sun/sun-keyboards.txt: Added a map for the US type 4 ! 608: keyboard. ! 609: ! 610: * scsi/cdrom-tme.c: ! 611: * scsi/scsi-cdrom.c: ! 612: * tme/scsi/scsi-cdrom.h: Added. ! 613: ! 614: * scsi/scsi-device.c (tme_scsi_device_check_condition): Added. ! 615: ! 616: * tme/scsi/scsi-device.h: Added a prototype for ! 617: tme_scsi_device_check_condition(). ! 618: ! 619: Thu Jan 18 02:15:49 2007 Matthew Fredette <[email protected]> ! 620: ! 621: * tme/common.h: Added definitions of __tme_predict_true() and ! 622: __tme_predict_false() for gcc>=2.96. ! 623: ! 624: Sun Jan 14 16:53:04 2007 Matthew Fredette <[email protected]> ! 625: ! 626: * generic/bus-el.c (tme_generic,bus): Fixed a printf string. Some ! 627: changes to silence gcc -Wuninitialized. ! 628: ! 629: * ic/sparc/Makefile.am: Added sparc-fpu-auto.sh to EXTRA_DIST. ! 630: ! 631: * ic/sparc/sparc-execute.c (_TME_SPARC_EXECUTE_NAME): In NetBSD 3.x, ! 632: the idle loop wrpsrs use %l1 instead of %g1, and the annulled wrpsr ! 633: writes IPL_SCHED << 8, not PSR_PIL. ! 634: ! 635: * ic/sparc/sparc-fpu-auto.sh: Removed the parameter lists from some ! 636: macro #undefs. ! 637: ! 638: * ic/sparc/sparc-fpu.c (tme_sparc_fpu_new): Removed the parameter list ! 639: from a macro #undef. ! 640: ! 641: * ic/sparc/sparc-insns.c (tme_sparc32_wrpsr): Updated the ! 642: netbsd32-type-0 idle type comment. ! 643: ! 644: * ic/sparc/sparc-misc.c (tme_sparc_new): Increased the burst size. ! 645: ! 646: * libtme/threads-sjlj.c (tme_sjlj_yield) [HAVE_GTK]: Fixed a bug where ! 647: we could round the number of microseconds to a whole second and leave ! 648: it that way. ! 649: ! 650: * machine/Makefile.am: Added the sun4 directory to DIST_SUBDIRS. ! 651: ! 652: * machine/sun/sun-fb.c (tme_bt458_omap_best): Fixed a bug caught by ! 653: gcc -Wuninitialized. ! 654: ! 655: * scsi/Makefile.am: Added scsi-cdrom.c and cdrom-tme.c to ! 656: tme_scsi_la_SOURCES. ! 657: ! 658: * scsi/scsi-tape.c (_tme_scsi_tape_mode_select_data): Fixed a bug ! 659: caught by gcc -Wuninitialized. ! 660: ! 661: * tme/scsi/Makefile.am: Now install scsi-cdrom.h. ! 662: ! 663: Mon Jan 08 00:59:04 2007 Matthew Fredette <[email protected]> ! 664: ! 665: * bus/Makefile.am: Added sbus to DIST_SUBDIRS. ! 666: ! 667: * bus/sbus/Makefile.am: ! 668: * bus/sbus/sun-fbs4.c: ! 669: * tme/ic/bt458.h: Added. ! 670: ! 671: * generic/scsi.c (tme_scsi_phase_resid): Added. ! 672: ! 673: * ic/Makefile.am: Added sparc to DIST_SUBDIRS. ! 674: Now build tme_ic_ncr53c9x.la, tme_ic_mk48txx.la, tme_ic_nec765.la, ! 675: tme_ic_am7930.la, tme_ic_am7990.la, and tme_ic_lsi64854.la. ! 676: ! 677: * ic/ncr53c9x.c: Added tme_ncr53c9x_transfer_resid_detect_state to ! 678: struct tme_ncr53c9x, for detecting the SCSI transfer residual while ! 679: data is being transferred. ! 680: (_tme_ncr53c9x_cs_monitor_phase): Now take a new argument that will ! 681: force the phase to be checked, even if there isn't any SCSI transfer ! 682: residual. All callers changed. ! 683: (_TME_NCR53C9X_CS_MONITOR_PHASE): Now check the phase immediately. ! 684: (_TME_NCR53C9X_CS_TRANSFER): Now initialize the transfer residual ! 685: detect state to zero. ! 686: (_tme_ncr53c9x_update): In TME_NCR53C9X_CMD_TRANSFER, fixed bugs for ! 687: the MESSAGE IN phase, and simplified the sequence for the MESSAGE OUT ! 688: phase. Fixed many bugs for all of the target selection commands. ! 689: (_tme_ncr53c9x_callout): When we're detecting the transfer residual ! 690: while data is being transferred, we can't transfer more than one byte ! 691: at a time from a TLB that only supports slow reading, and also call ! 692: tme_scsi_phase_resid() to do the detection. ! 693: Don't hold ACK on a transfer unless it definitely includes the last ! 694: byte of the transfer. ! 695: (_tme_ncr53c9x_scsi_cycle): Fixed a bug where we wouldn't note an ! 696: automatically asserted ACK or ATN in the active SCSI cycle. ! 697: (_tme_ncr53c9x_bus_cycle): Fixed a bug where we wouldn't add to the ! 698: data FIFO at the head. ! 699: ! 700: * ic/nec765.c (_tme_nec765_bus_cycle): More correctly alias reads and ! 701: writes to register number two on an i82072 to the MSR and DRS, ! 702: respectively. This allows both the NetBSD fdc and the SunOS fd ! 703: drivers to work. ! 704: ! 705: * ic/sparc/sparc-execute.c: Now define tme_sparc_idle_type_pc ! 706: appropriately for the version. ! 707: (_TME_SPARC_EXECUTE_NAME): When we begin a new instruction burst, if ! 708: the first instruction in the burst is the beginning of the idle loop, ! 709: go idle. ! 710: Check an annulled instruction for the netbsd32-type-0 idle type. ! 711: Check a branch for the sunos32-type-0 idle type. Fixed a bug where ! 712: repeated annulled instructions could cause the instruction burst to ! 713: never finish. ! 714: ! 715: * ic/sparc/sparc-fpu-auto.sh: Avoid a gcc -Wuninitialized warning by ! 716: setting fpreg_rd_format even for an unimplemented operation. ! 717: ! 718: * ic/sparc/sparc-impl.h: Added support for idle types. ! 719: ! 720: * ic/sparc/sparc-insns-auto.sh: In the slow read and write functions, ! 721: fixed a bug found by gcc -Wuninitialized in the unusual case where ! 722: this cycle is part fast, part slow, where we would use use an ! 723: uninitialized resid. ! 724: ! 725: * ic/sparc/sparc-insns.c (tme_sparc32_rdasr): To avoid a gcc ! 726: -Wuninitialized warning, for an unimplemented rdasr set value to zero ! 727: even though we abort(). ! 728: (tme_sparc32_rdpsr): Added support for the sunos32-type-0 idle type. ! 729: (tme_sparc32_wrpsr): Added support for the sunos32-type-0 and ! 730: netbsd32-type-0 idle types. ! 731: ! 732: * ic/sparc/sparc-misc.c (_tme_sparc_command): ! 733: (tme_sparc_do_idle): tme_sparc_fetch_nearby): Added. ! 734: (tme_sparc_new): Now set _tme_sparc_command to handle commands. ! 735: Poison the initial idle type state. ! 736: ! 737: * machine/sun/sun-cgtwo.c: Use the new generic tme_sunfb_ functions ! 738: and macros instead of the older tme_sun_fb_p4_ functions. ! 739: ! 740: * machine/sun/sun-fb.c: Replaced the old tme_sun_fb_p4_ functions with ! 741: the new generic tme_sunfb_ functions, and added support for more ! 742: sizes. ! 743: Added all of the new generic Sun framebuffer support, including some ! 744: out-of-place Bt458 support. ! 745: (tme_sun_cgthree): Added. ! 746: ! 747: * machine/sun/sun-fb.h: Removed most of the P4-specific definitions. ! 748: Added many definitions for a generic Sun framebuffer, including some ! 749: P4 and S4 specifics. ! 750: ! 751: * machine/sun4/sun4-mainbus.c (tme_machine_sun4,bwtwo): ! 752: (tme_machine_sun4,si): ! 753: (tme_machine_sun4,cgtwo): Removed. ! 754: ! 755: * scsi/scsi-bus.c (_tme_scsi_bus_cycle): Added an assert to the ! 756: bulk-copy code to check that the target is always in sequence step ! 757: one. ! 758: ! 759: * scsi/scsi-device.c (_tme_scsi_device_cycle): Now log the message in ! 760: a MESSAGE_OUT phase. Now extended messages have their own dispatch ! 761: array. ! 762: (tme_scsi_device_target_mc): Added. ! 763: (tme_scsi_device_new): By default, a new device will reject ! 764: synchronous negotiation. ! 765: ! 766: * scsi/scsi-msg.c (tme_scsi_device_msg_target_reject): Added. ! 767: ! 768: * tme/generic/scsi.h: Added the prototype for tme_scsi_phase_resid(). ! 769: ! 770: * tme/ic/Makefile.am: Added bt458.h to tmeicinclude_HEADERS. ! 771: ! 772: * tme/machine/sun.h: Added a prototype for tme_sun_cgthree(). ! 773: ! 774: * tme/scsi/scsi-device.h: Now define TME_SCSI_DEVICE_DO_MSG_EXT(). ! 775: Added a dispatch array for extended messages to struct ! 776: tme_scsi_device. ! 777: Now declare tme_scsi_device_target_mc(). ! 778: ! 779: * tme/scsi/scsi-msg.h: Now define TME_SCSI_MSG_EXT_SDTR. Now declare ! 780: tme_scsi_device_msg_target_reject(). ! 781: ! 782: Sun Nov 26 16:37:55 2006 Matthew Fredette <[email protected]> ! 783: ! 784: * generic/bus.c (tme_bus_tlb_fill): Fixed bugs in the support for bus ! 785: connections with nonzero sourced-address masks. ! 786: ! 787: * ic/am7930.c: ! 788: * ic/am7990.c: Added. ! 789: ! 790: * ic/mk48txx.c (_tme_mk48txx_bus_cycle): Added support for a ! 791: platform's year zero. ! 792: ! 793: * ic/ieee754/ieee754-misc-auto.sh: Removed the simple ! 794: tme_ieee754_PRECISION_to_int32 functions in favor of the ops versions. ! 795: ! 796: * ic/ieee754/ieee754-ops-auto.sh: Now emit ops for from_int32 and ! 797: from_int64. Now allow an op to override the type of its first source ! 798: operand. Made the generation of the preprocessor condition more ! 799: general. Added some more support for integral source operands. Fixed ! 800: a bug in substituting in softfloat function names. ! 801: ! 802: * ic/sparc/sparc-fpu-auto.sh: Fixed the ops that convert between ! 803: integer and floating-point to use the regular IEEE754 ops. ! 804: ! 805: * machine/sun4/sun4-mainbus.c (tme_machine_sun4,clock): Now set the ! 806: sun4 year zero in the mk48txx socket. ! 807: ! 808: * scsi/scsi-bus.c (_tme_scsi_bus_callout): Now clear the actions and ! 809: events for a connection before they are called out, to prevent calling ! 810: them out again. ! 811: Added support for the cycle marker bit. ! 812: (_tme_scsi_bus_cycle): Added support for the cycle marker bit. Added ! 813: support for TME_SCSI_ACTION_SELECT_WITH_ATN and ! 814: TME_SCSI_ACTION_DMA_INITIATOR_HOLD_ACK. Moved the bulk DMA copy code ! 815: inside the slow initiator DMA code. This allows the normal target and ! 816: initiator slow DMA code to always handle the boundaries of a transfer, ! 817: which (especially in the initiator hold ACK case) can be important. ! 818: ! 819: * scsi/scsi-tape.c: Added the tme generic SCSI-1 tape to the list. ! 820: (tme_scsi_tape_cdb_xfer0): Added a big hack to quickly fix NetBSD PR ! 821: pkg/34536. ! 822: (_tme_scsi_tape_mode_select_data): Added. ! 823: (tme_scsi_tape_cdb_block_limits): ! 824: (tme_scsi_tape_cdb_mode_select): Implemented. ! 825: ! 826: * tme/common.h: Replaced the old TME_FIELD_MASK_EXTRACTS macros with a ! 827: single smarter version. ! 828: Now TME_FIELD_MASK_DEPOSITU masks the value being deposited. ! 829: ! 830: * tme/memory.h [!TME_THREADS_COOPERATIVE]: Now define ! 831: TME_MEMORY_BUS_BOUNDARY to be sizeof(tme_uint8_t), to avoid some ! 832: compiler warnings when the previous value of zero was used in some ! 833: comparisons. ! 834: ! 835: * tme/generic/ethernet.h: Fixed a bug where the source address field ! 836: was named tme_ethernet_header_size. ! 837: ! 838: * tme/generic/scsi.h: Renumbered the SCSI actions to allow for future ! 839: expansion, and also to add TME_SCSI_ACTION_DMA_INITIATOR_HOLD_ACK, ! 840: TME_SCSI_ACTION_SELECT_WITH_ATN, and TME_SCSI_ACTION_CYCLE_MARKER. ! 841: ! 842: * tme/ic/mk48txx.h: Added tme_mk48txx_socket_year_zero to the socket ! 843: structure. ! 844: ! 845: * tme/scsi/scsi-device.h: Expanded tme_scsi_device_data to 256 bytes, ! 846: to hold a large MODE SELECT parameter list. ! 847: ! 848: Thu Nov 16 02:54:40 2006 Matthew Fredette <[email protected]> ! 849: ! 850: * generic/bus-el.c (_tme_bus_connections_new): Added support for the ! 851: 'slot', 'offset', 'controller', and 'dma-offset' arguments. ! 852: (TME_ELEMENT_SUB_NEW_DECL(tme_generic,bus)): Added real argument ! 853: processing, and added support for the arguments that define bus slots. ! 854: ! 855: * generic/bus.c (tme_bus_tlb_fill): If this bus has a controller, and ! 856: the TLB fill request isn't from the controller, pass the TLB fill on ! 857: to the controller. ! 858: (tme_bus_connection_make): Added support for making a connection to a ! 859: bus controller. ! 860: ! 861: * generic/ethernet.c (tme_ethernet_chunks_copy): Made the destination ! 862: chunks structures const. ! 863: (tme_ethernet_crc32_el): Added. ! 864: ! 865: * ic/lsi64854.c ic/ncr53c9x.c ic/nec765.c machine/sun4/sun4-fdc.c ! 866: scsi/tape-tme.c tme/ic/nec765.h: ! 867: ! 868: Added. ! 869: ! 870: * ic/ncr5380.c (_tme_ncr5380_signal): Now use TME_BUS_SIGNAL_WHICH() ! 871: to remove the flags from a bus signal. ! 872: ! 873: * ic/z8530.c (_tme_z8530_channel_reset): Now have ! 874: TME_Z8530_RR1_ALL_SENT in the reset value for RR1. ! 875: (_tme_z8530_bus_cycle): Now clear TME_Z8530_RR1_ALL_SENT when transmit ! 876: data is written. ! 877: (_tme_z8530_read): Now set TME_Z8530_RR1_ALL_SENT when all transmit ! 878: data has been written. ! 879: ! 880: * ic/ieee754/ieee754-misc-auto.sh: Now emit prototypes for the ! 881: functions that convert floats to 32-bit integers. ! 882: ! 883: * ic/ieee754/ieee754-misc.c (tme_ieee754_fpreg_format): Added. ! 884: ! 885: * ic/sparc/cy7c601.c (TME_ELEMENT_X_NEW_DECL(tme_ic_,sparc,cy7c601)): ! 886: The common CY7C601 has a PSR version of 1. Use the default slow ! 887: instruction fetch function. ! 888: ! 889: * ic/sparc/mb86900.c (TME_ELEMENT_X_NEW_DECL(tme_ic_,sparc,mb86900)): ! 890: Use the default slow instruction fetch function. ! 891: ! 892: * ic/sparc/sparc-execute.c (_TME_SPARC_EXECUTE_NAME): Now save the ASI ! 893: mask for instructions in the CPU state. ! 894: Now fetch all instructions with tme_memory_bus_read32(), which gives ! 895: all needed behavior (when threads are cooperative, ! 896: tme_memory_atomic_read32 means a function call). Now log call ! 897: instructions, which makes reconstructing code flow possible. ! 898: ! 899: * ic/sparc/sparc-fpu.c (tme_sparc_fpu_new): Fixed a bug where the FPU ! 900: version wasn't being put into the FSR. ! 901: ! 902: * ic/sparc/sparc-impl.h: Now define TME_SPARC_SLOW_FLAG_INSN and ! 903: TME_SPARC_SLOW_FLAG_NO_FAULTS for the slow load and store functions. ! 904: Now _tme_sparc_bus_fault/tme_sparc32_bus_fault get the flags passed to ! 905: the slow load/store function. Added a prototype for ! 906: tme_sparc32_fetch_slow(). ! 907: ! 908: * ic/sparc/sparc-insns-auto.sh: For the instructions that have ! 909: add-style condition codes, changed the calculation of C to match the ! 910: V8 architecture manual. In the memory access instructions, instead of ! 911: using a tme_memory_atomic_ function, use a tme_memory_bus_ function, ! 912: which is how it should always have been. Log jmpl instructions that ! 913: act as call or return instructions, which makes reconstructing code ! 914: flow possible. In the slow load/store functions, use the ASI mask for ! 915: instructions if the instruction flag is specified, and allow the ! 916: CPU-specific bus fault handler to cancel a fault. ! 917: ! 918: * ic/sparc/sparc-insns.c (tme_sparc32_rett): Fixed a bug where a user ! 919: PS wasn't restored into S correctly. Fixed a bug where we wouldn't ! 920: redispatch after changing the PSR. ! 921: (tme_sparc32_ticc): Fixed a bug where we thought the trap number was ! 922: in rd, instead of from rs1 + rs2. ! 923: ! 924: * ic/sparc/sparc-misc.c (tme_sparc32_fetch_slow): Added. ! 925: (tme_sparc32_bus_fault): When a fault happens during an instruction ! 926: fetch, ignore the fault if we're supposed to, otherwise return an ! 927: instruction access exception instead of a data access exception. ! 928: ! 929: * libtme/module.c (_tme_modules_find): Fixed a bug where we wouldn't ! 930: check the LTDL_SHLIBPATH_VAR directory for modules. ! 931: ! 932: * libtme/threads-sjlj.c (tme_sjlj_cond_sleep_yield): Added. ! 933: ! 934: * machine/sun/sun-mmu.c: In struct tme_sun_mmu, added members for MMUs ! 935: with an address space hole. ! 936: (tme_sun_mmu_new): If this MMU has an address space hole, adjust the ! 937: number of address bits and save a mask with the last significant ! 938: address bit set. ! 939: (_tme_sun_mmu_lookup): If this MMU has an address space hole, and the ! 940: address to look up is in the hole, return the hole PTE. ! 941: (tme_sun_mmu_pte_set): ! 942: (tme_sun_mmu_segmap_get): ! 943: (tme_sun_mmu_segmap_set): Handle addresses in an address space hole. ! 944: (tme_sun_mmu_tlb_fill): Fixed a bug in the previous commit that would ! 945: not remember TLBs filled from invalid PTEs for later invalidation when ! 946: those PTEs are made valid. However, don't remember TLBs filled in the ! 947: address hole. ! 948: ! 949: * machine/sun/sun-si.c (_tme_sun_si_tlb_fill): Now use ! 950: tme_bus_tlb_initialize() to make a TLB entry passed on the stack ! 951: invalid, since tme_bus_tlb_invalidate() assumes that the TLB's locks ! 952: have been constructed. ! 953: ! 954: * machine/sun4/Makefile.am: Added sun4-fdc.c to ! 955: tme_machine_sun4_la_SOURCES. ! 956: ! 957: * machine/sun4/sun4-mainbus.c (_tme_sun4_connections_new): Only fill ! 958: the TLB set allocator on a bus connection for an actual bus, not the ! 959: other devices. ! 960: ! 961: * machine/sun4/sun4-timer.c (_tme_sun4_timer_reset): Fixed a ! 962: TME_SUN4_IS_SUN4C to TME_SUN4_IS_SUN44C. ! 963: (_tme_sun4_timer_cycle_control): Fixed a bug where we had the counter ! 964: values counting down, not up. Fixed a TME_SUN4_IS_SUN4C to ! 965: TME_SUN4_IS_SUN44C. Now log for all registers, and make the minimum ! 966: log level much higher to filter out these messages. ! 967: ! 968: * machine/sun4/sun44c-mmu.c (_tme_sun44c_buserr_log): On a sun4c, add ! 969: 0xf0000000 to the physical address displayed. ! 970: (_tme_sun44c_tlb_fill_mmu): ! 971: (_tme_sun44c_tlb_fill_pte): Before a TLB has been filled, it has no ! 972: fault handlers, and since the TLB might be on the stack its handler ! 973: count is garbage, so always thread the initiator's bus connection down ! 974: as the first fault handler private value. ! 975: ! 976: * scsi/Makefile.am: Added tape-tme.c to tme_scsi_la_SOURCES. ! 977: ! 978: * scsi/scsi-device.c (tme_scsi_device_target_phase): Bumped the log ! 979: level for the various data phases so it's easier to filter the ! 980: messages out. ! 981: (_tme_scsi_device_cycle): Fixed a bug in handling the length byte of ! 982: an extended message. ! 983: ! 984: * serial/Makefile.am: Added serial-sink.c to tme_serial_kb_la_SOURCES. ! 985: ! 986: * tme/Makefile.am: Replaced atomics.h with memory.h in ! 987: pkginclude_HEADERS. ! 988: ! 989: * tme/connection.h: Now define TME_CONNECTION_BUS_SPARC. ! 990: ! 991: * tme/threads.h: Now define TME_THREADS_COOPERATIVE to TRUE. Now ! 992: define tme_thread_suspend_others() and tme_thread_resume_others(). ! 993: [!TME_NO_DEBUG_LOCKS]: When __FILE__ and __LINE__ aren't defined, ! 994: fixed a bug where we would pass in NULL for __LINE__, instead of zero. ! 995: Added a prototype for tme_sjlj_cond_sleep_yield(), and the ! 996: tme_cond_sleep_yield() macro. Removed the old atomic memory access ! 997: support. ! 998: ! 999: * tme/generic/bus.h: Now define ! 1000: TME_BUS_CONNECTION_INT_FLAG_ADDRESSABLE and ! 1001: TME_BUS_CONNECTION_INT_FLAG_CONTROLLER. Now define struct ! 1002: tme_bus_slot. In struct tme_bus, keep a list of struct tme_bus_slot, ! 1003: and track up to one bus connection that is the "controller" of the ! 1004: bus. ! 1005: ! 1006: * tme/generic/ethernet.h: Added a const to the prototype for ! 1007: tme_ethernet_chunks_copy(), and added a prototype for ! 1008: tme_ethernet_crc32_el(). ! 1009: ! 1010: * tme/generic/ic.h: Quadrupled the value of TME_IC_REGS_SIZE, to ! 1011: support the SPARC emulations and their large register sets. In struct ! 1012: tme_ic, fixed the definitions for the 64-bit register members, to ! 1013: divide the TME_IC_REGS_SIZE by eight instead of sixteen. ! 1014: ! 1015: * tme/ic/Makefile.am: Added sparc.h, mk48txx.h, and nec765.h to ! 1016: tmeicinclude_HEADERS. ! 1017: ! 1018: * tme/ic/ieee754.h: Now define macros describing an IEEE754 register ! 1019: file. Added a prototype for tme_ieee754_fpreg_format(). ! 1020: ! 1021: * tme/machine/sun.h: Now define TME_SUN_IDPROM_OFF_MACHTYPE, and ! 1022: macros for some possible machine and architecture types. In struct ! 1023: tme_sun_mmu_info, added tme_sun_mmu_info_topindex_bits, for describing ! 1024: either the number of top address bits for region, or for the address ! 1025: hole. ! 1026: ! 1027: * tme/scsi/scsi-tape.h: In struct tme_scsi_tape, added members for ! 1028: describing the minimum, maximum, and current block sizes. ! 1029: ! 1030: * tmesh/tmesh-cmds.c (_tmesh_command_alias): Added. ! 1031: (tmesh_eval): Now dispatch an 'alias' command. ! 1032: ! 1033: * tmesh/tmesh-impl.h: Now define TMESH_COMMAND_ALIAS. ! 1034: ! 1035: * tmesh/tmesh-input.y: Added support for scanning and parsing the new ! 1036: 'alias' command. ! 1037: ! 1038: Sat Sep 30 13:48:38 2006 Matthew Fredette <[email protected]> ! 1039: ! 1040: * bus/multibus/3c400.c bus/multibus/sun-mie.c bus/multibus/sun-sc.c ! 1041: generic/bus-device-auto.sh generic/bus-device.c generic/bus-el.c ! 1042: generic/bus.c host/posix/posix-memory.c host/posix/posix-serial.c ! 1043: ic/am9513.c ic/i825x6.c ic/isil7170.c ic/mm58167.c ic/ncr5380.c ! 1044: ic/z8530.c libtme/Makefile.am libtme/memory-auto.sh ! 1045: machine/sun/sun-bwtwo.c machine/sun/sun-cgtwo.c ! 1046: machine/sun/sun-mmu.c machine/sun/sun-obie.c machine/sun/sun-si.c ! 1047: machine/sun2/sun2-impl.h machine/sun2/sun2-mmu.c ! 1048: machine/sun3/sun3-impl.h machine/sun3/sun3-mmu.c tme/connection.h ! 1049: tme/memory.h tme/tme.h tme/generic/bus-device.h tme/generic/bus.h ! 1050: tme/ic/m68k.h tme/machine/sun.h: ! 1051: ! 1052: Changed how atomic values are handled. Removed the TME_ATOMIC_ set ! 1053: of macros, which may or may not use a rwlock to serialize access to ! 1054: a value, and added the tme_memory_atomic_ set of macros, which ! 1055: always requires an rwlock argument. ! 1056: This tme_memory_atomic_ set of macros also takes a compile-time ! 1057: minimum alignment hint, covers a wide range of math operations, and ! 1058: is guaranteed to work atomically for any access, no matter what the ! 1059: actual alignment. ! 1060: Added the tme_memory_bus_ set of macros, which work just like the ! 1061: tme_memory_atomic_ macros but only within a certain bus size - i.e., ! 1062: if a 32-bit bus size is specified, and an access crosses one ! 1063: 32-bit-aligned address boundary, the access will be split into two ! 1064: atomic accesses. ! 1065: The tme_memory_atomic_ and tme_memory_bus_ macros should better ! 1066: enable emulation on a non-cooperative threading host someday. Added ! 1067: the tme_memory_ set of macros, which don't access memory atomically ! 1068: but still take the same compile-time minimum-alignment hint and are ! 1069: guaranteed to work for any actual alignment. This has caused ! 1070: significant fallout in all TLB handling, since the first and last ! 1071: address fields in a TLB were previously TME_ATOMICs, and TLBs were ! 1072: invalidated by atomically updating these first to be greater than ! 1073: last. ! 1074: This method would not have worked in a non-cooperative threading ! 1075: host. First, it was impossible to update both first and last ! 1076: address fields simultaneously, and second, it was impossible to know ! 1077: if anyone was using, or had committed to using, the TLB while you ! 1078: were invalidating it. Without knowing that the TLB can't be used ! 1079: after invalidation, the invalidator can't continue and make other ! 1080: changes that would give incorrect behavior if the TLB *is* actually ! 1081: used later. ! 1082: So, TLBs have a new discipline. They have "busy" and "invalid" ! 1083: atomic flags. Before a TLB entry is used, its busy flag is marked ! 1084: true, and its invalid flag is checked. If the invalid flag is true, ! 1085: the TLB is unbusied and prepared for filling (see ! 1086: tme_bus_tlb_unbusy_fill() and tme_bus_tlb_invalidate() for how they ! 1087: synchronize and avoid interesting races), otherwise the TLB entry is ! 1088: valid and won't be invalidated until its busy flag is set to false. ! 1089: To make this truly thread-safe, someday all slow bus cycle handlers ! 1090: will have to take a TLB entry somehow, so they can correctly busy ! 1091: the TLB entry before making the access. ! 1092: ! 1093: * generic/ethernet.c generic/keyboard.c generic/mouse.c ! 1094: libtme/element.c scsi/acb4000.c serial/serial-kb.c: ! 1095: ! 1096: Now explicitly include errno.h. ! 1097: ! 1098: * host/bsd/bsd-bpf.c host/posix/posix-tape.c serial/serial-kb.h ! 1099: serial/serial-ms.h tme/scsi/scsi-device.h: ! 1100: ! 1101: Now explicitly include tme/threads.h. ! 1102: ! 1103: * ic/mk48txx.c ic/sparc/Makefile.am ic/sparc/cy7c601.c ! 1104: ic/sparc/mb86900.c ic/sparc/sparc-bus-auto.sh ! 1105: ic/sparc/sparc-execute.c ic/sparc/sparc-fpu-auto.sh ! 1106: ic/sparc/sparc-fpu.c ic/sparc/sparc-impl.h ! 1107: ic/sparc/sparc-insns-auto.sh ic/sparc/sparc-insns.c ! 1108: ic/sparc/sparc-misc-auto.sh ic/sparc/sparc-misc.c ! 1109: machine/sun4/Makefile.am machine/sun4/SUN4-75 ! 1110: machine/sun4/sun4-impl.h machine/sun4/sun4-mainbus.c ! 1111: machine/sun4/sun4-timer.c machine/sun4/sun44c-cache.c ! 1112: machine/sun4/sun44c-control.c machine/sun4/sun44c-memerr.c ! 1113: machine/sun4/sun44c-mmu.c serial/serial-sink.c tme/ic/mk48txx.h ! 1114: tme/ic/sparc.h: ! 1115: ! 1116: Added. ! 1117: ! 1118: * machine/sun3/sun3-mainbus.c (_tme_sun3_command): Fixed a bug where ! 1119: we wouldn't reset the VME bus. ! 1120: ! 1121: * tme/atomics.h: Removed. ! 1122: ! 1123: Sun Dec 04 22:53:37 2005 Matthew Fredette <[email protected]> ! 1124: ! 1125: * ic/ncr5380.c: Fixed a bug in the TME_NCR5380_REG_PUT macro. ! 1126: (_tme_ncr5380_reg_put): Now declared static. ! 1127: (_tme_ncr5380_callout): Fixed a comment. Fixed a bug where we ! 1128: wouldn't set the residual in the SCSI DMA structure. ! 1129: ! 1130: * ic/m68k/m68k-execute.c (_TME_M68K_EXECUTE_NAME): Fixed a bug where ! 1131: we would call the slow executor inside a return() statement. ! 1132: ! 1133: * machine/sun/sun-cgtwo.c (_tme_suncg2_validate_bitmaps): Fixed a bug ! 1134: where we were processing the pixmap into the bitmaps from ! 1135: left-to-right, instead of from right-to-left like the individual pixel ! 1136: bit translation requires. ! 1137: ! 1138: * machine/sun/sun-si.c (tme_sun_si): Now fail and display the usage if ! 1139: no si type is given. Fixed the usage string. ! 1140: ! 1141: Sat Jun 11 13:47:23 2005 Matthew Fredette <[email protected]> ! 1142: ! 1143: * machine/sun/sun-mmu.c: Removed the invalid segment member of the MMU ! 1144: structure, since the hardware doesn't have the notion of an invalid ! 1145: segment. ! 1146: (tme_sun_mmu_new): Now initialize the segment map with the last PMEG ! 1147: number. ! 1148: (tme_sun_mmu_pte_get): ! 1149: (tme_sun_mmu_pte_set): ! 1150: (tme_sun_mmu_segmap_set): Removed checks for the invalid segment. ! 1151: ! 1152: * machine/sun2/sun2-mmu.c (_tme_sun2_mmu_new): Now zero the MMU ! 1153: information structure first, and don't provide the invalid segment ! 1154: number. ! 1155: ! 1156: * machine/sun3/sun3-mmu.c (_tme_sun3_mmu_new): Now zero the MMU ! 1157: information structure first, and don't provide the invalid segment ! 1158: number. ! 1159: ! 1160: * tme/machine/sun.h: Removed tme_sun_mmu_info_seginv from struct ! 1161: tme_sun_mmu_info. ! 1162: 1.1.1.3 root 1163: Sun May 15 01:24:11 2005 Matthew Fredette <[email protected]> 1164: 1165: * Release 0.4 out. 1166: 1167: * configure.in: Fixed a bug where StaticGray, StaticColor, and 1168: PseudoColor visuals would be considered indexed. This would cause the 1169: translation functions to incorrectly try to map intensities into pixel 1170: subfields. 1171: 1172: Sat May 14 22:28:29 2005 Matthew Fredette <[email protected]> 1173: 1174: * TODO: Updated. 1175: 1176: * acinclude.m4 (AC_CHECK_FUNC_LONG): Added. 1177: 1178: * configure.in: Now check for sys/bswap.h, bswap16(), and bswap32(). 1179: Now check for isinff(). 1180: Instead of taking a set of host display formats in the environment 1181: variable TME_DISPLAYS, now take the configure argument 1182: --with-tme-host-displays. When debugging is disabled, to get best 1183: performance now define macros that preprocess out a lot of debugging 1184: code. Debugging now defaults to disabled. 1185: 1186: * generic/float.c [!HAVE_ISINFF] (isinff): Added. 1187: 1188: * host/gtk/gtk-screen.c (_tme_gtk_screen_mode_change): Now initially 1189: try to allocate new colors. For any colors that fail, try to allocate 1190: best-match colors. Warn if even best-match colors could not be 1191: allocated. 1192: 1193: * ic/ieee754/ieee754-misc.c: Declare more single- and double-precision 1194: constants. 1195: 1196: * tme/common.h: Now include <sys/bswap.h> for the byteswapping 1197: functions. When the host is big-endian, try to use bswap16() and 1198: bswap32() for byteswapping functions, otherwise define them. Now 1199: define little-endian conversion functions on big-endian hosts. 1200: 1201: * tme/generic/float.h: Corrected some HAVE_ macros to _TME_HAVE_ 1202: macros. Now include float.h and limits.h. Added a prototype for 1203: isinff(). 1204: 1205: Sat May 14 19:18:42 2005 Matthew Fredette <[email protected]> 1206: 1207: * generic/fb-xlat-auto.sh: Fixed a bug in the initialization of 1208: dst_masks_default, that was causing incorrect halving translation on 1209: PseudoColor hosts. 1210: 1211: * host/gtk/gtk-keyboard.c (_tme_gtk_keyboard_lookup): Fixed a bug in 1212: the warning message when a keysym can't be generated by the host 1213: keyboard. 1214: 1215: * ic/ieee754/Makefile.am: Added -lm to libtme_ieee754_la_LDFLAGS. 1216: 1217: * ic/m68k/m68k-opmap-dump.c: 1218: * machine/sun3/sun3-carrera-eeprom.txt: Added. 1219: 1220: * ic/m68k/m68k-opmap-make.pl: The previous opcode map functions were 1221: too big (or complicated?) to be compiled in a reasonable amount of 1222: time on slower machines. Now compress the functions down by 1223: initializing similar roots close to each other, and in groups whenever 1224: possible. This cuts down on the amount of params[] refilling and 1225: function calls, and decreases the size of m68k-opmap.c by almost half. 1226: 1227: * machine/sun3/Makefile.am: Added sun3-carrera-eeprom.txt to 1228: examples_DATA. 1229: 1230: * serial/serial-kb.c (_tme_serial_kb_connection_make): When a keyboard 1231: macro can't be parsed, instead of aborting, just log a complaint. 1232: 1233: Sat May 14 01:43:33 2005 Matthew Fredette <[email protected]> 1234: 1235: * acinclude.m4 (AC_CHECK_FLOAT_FORMAT): Fixed a tme_uint16_t, which 1236: was causing failures on big-endian systems. 1237: 1238: * ic/ieee754/softfloat-tme.c: Swapped some declarations that were with 1239: the wrong comments. 1240: 1241: * tme/ic/ieee754.h: Declare more single- and double-precision 1242: constants. 1243: 1244: Wed May 11 00:15:42 2005 Matthew Fredette <[email protected]> 1245: 1246: * dist/softfloat/softfloat/bits64/softfloat-macros (add192): 1247: (sub192): Fixed some gcc3 signed/unsigned comparison warnings. 1248: 1249: * dist/softfloat/softfloat/bits64/softfloat.c (roundAndPackFloatx80): 1250: Fixed a gcc3 signed/unsigned comparison warning. 1251: 1252: * ic/i825x6.c (_tme_i825x6_callout_ru): 1253: (_tme_i825x6_callout): Fixed some gcc3 signed/unsigned comparison 1254: warnings. 1255: 1256: * ic/ieee754/ieee754-misc-auto.sh: Fixed a gcc3 signed/unsigned 1257: comparison warning. 1258: 1259: * machine/sun3/sun3-mainbus.c (_tme_sun3_bus_intack): Make signal 1260: unsigned, to fix gcc3 signed/unsigned comparison warnings. 1261: 1262: * tme/generic/float.h (tme_float_is_negative): Fixed all conditional 1263: arms to be conditional expressions, to keep the type of the whole 1264: expression int. 1265: 1266: Tue May 10 11:15:26 2005 Matthew Fredette <[email protected]> 1267: 1268: * machine/sun3/SUN3-CARRERA: Disable obie0 by default. 1269: 1270: Tue May 10 00:38:19 2005 Matthew Fredette <[email protected]> 1271: 1272: * host/gtk/gtk-keyboard.c (_tme_gtk_keyboard_attach): Connect the 1273: key_press and key_release events with gtk_signal_connect_after, so we 1274: can stop the event from propagating up to parents, where a GtkWindow 1275: parent will do strange things with arrow key presses. 1276: 1277: * ic/isil7170.c (_tme_isil7170_bus_cycle): Fixed an off-by-one bug in 1278: the month register. 1279: 1280: * machine/sun3/SUN3-CARRERA: Disable the serial console by default. 1281: 1282: Mon May 09 02:01:02 2005 Matthew Fredette <[email protected]> 1283: 1284: * machine/sun/sun-cgtwo.c (_tme_suncg2_bus_cycle_regs): Wrap the 1285: rasterop register log in #ifndef TME_NO_LOG, since the rasterop 1286: register names array doesn't exist otherwise. 1287: 1288: Mon May 09 01:59:03 2005 Matthew Fredette <[email protected]> 1289: 1290: * generic/ethernet.c (tme_ethernet_chunks_copy): Fixed a bug where the 1291: size of the destination buffer would get loaded with the size of the 1292: source buffer. 1293: 1294: * generic/fb.c (_tme_fb_xlat_colors_get_set): Fixed a bug where the 1295: number of colors allocated wasn't being saved. 1296: 1297: * ic/i825x6.c (_tme_i825x6_fbl_refill): Now tolerate a Receive Buffer 1298: with zero size. 1299: (_tme_i825x6_callout_ru): Initialize rbd_size early, since its value 1300: is decreased early when a fake receive buffer is made from the RFD 1301: Ethernet header space. 1302: 1303: Sat Apr 30 15:22:25 2005 Matthew Fredette <[email protected]> 1304: 1305: * configure.in: Now determine the default display depth with xwininfo 1306: -root, assuming that the root window is at the default depth. If the 1307: depth is greater than one, also determine the visual class and any 1308: subfield masks, and include this information in the destination image 1309: key. Add support for color framebuffer images on the sun3. 1310: 1311: * generic/bus.c (_tme_bus_cycle_xfer_resp_least_lane): 1312: (tme_bus_cycle_xfer_reg): Added. 1313: 1314: * generic/fb-xlat-auto.sh: Added support for color source and 1315: destination images. 1316: 1317: * generic/fb.c (tme_fb_xlat_best): 1318: (tme_fb_xlat_is_optimal): Now consider source image class, mapping 1319: type, mapping size, and subfield masks, and destination image mapping 1320: type and subfield masks. 1321: (_tme_fb_xlat_colors_get_set): 1322: (tme_fb_xlat_colors_get): 1323: (tme_fb_xlat_colors_set): Added. 1324: 1325: * host/gtk/gtk-display.h: Removed the monochrome invert mask from 1326: struct tme_gtk_display. Inversion is now specified by the 1327: framebuffer. 1328: 1329: * host/gtk/gtk-screen.c (_tme_gtk_screen_mode_change): Added color 1330: support. Now we determine the destination image class, mapping, and 1331: any subfield masks. We choose a translation function based on image 1332: classes, mappings, and subfield masks, and allocate colors on behalf 1333: of the translation function. 1334: 1335: * ic/m68k/m68020.c (_tme_m68020_exception): Fixed a bug where a 32-bit 1336: fetch wasn't marking the B stage as faulted. 1337: 1338: * ic/m68k/m68k-execute.c (_TME_M68K_EXECUTE_NAME): Fixed a bug with 1339: the instruction buffer. Before, when the slow executor would take a 1340: fault in the middle of a 32-bit instruction fetch, the successfully 1341: fetched first 16 bits wouldn't get put in the instruction buffer by 1342: the fault processing, because a fetch was only accounted for once it 1343: fully succeeded. When the fetch was resumed, the first 16 bits was 1344: lost. Now, a slow executor fetch is accounted for before it begins, 1345: which guarantees that any partially fetched instruction makes it into 1346: the instruction buffer. 1347: 1348: * ic/m68k/m68k-misc-auto.sh: Now, we update the instruction buffer 1349: fetch total and sizes values before we do the actual fetch, because we 1350: may transfer a few bytes and then fault. Without this, those few 1351: bytes wouldn't get saved in the exception stack frame by 1352: tme_m68k_insn_buffer_xfer(), because it wouldn't know about the fetch. 1353: Later, when the instruction would be resumed, tme_m68k_fetch32() won't 1354: refetch them, because it knows they've already been fetched and thinks 1355: they're still in the instruction buffer. 1356: 1357: * machine/sun/Makefile.am: Now build sun-cgtwo.c for 1358: libtme_machine_sun.la. 1359: 1360: * machine/sun/sun-bwtwo.c (_tme_sunbw2_connections_new): Fill in the 1361: new parts of the struct tme_fb_connection. 1362: (tme_sun_bwtwo): Fixed a bug in the argument processing. 1363: 1364: * machine/sun/sun-cgtwo.c: Added. 1365: 1366: * machine/sun2/SUN2-MULTIBUS: Since the Emulex emulation changed 1367: slightly, make sure that NetBSD will still probe this as an Emulex. 1368: 1369: * machine/sun3/SUN3-CARRERA: Added support for the cgthree board. 1370: 1371: * machine/sun3/sun3-mainbus.c (tme_machine_sun3,cgtwo): Added. 1372: 1373: * machine/sun3/sun3-mmu.c (_tme_sun3_tlb_fill_mmu): Temporarily work 1374: around a bug in NetBSD/sun3 where the cgtwo is mapped at the wrong 1375: physical address. 1376: 1377: * tme/generic/bus.h: Added a prototype for tme_bus_cycle_xfer_reg(). 1378: 1379: * tme/generic/fb.h: Added macros for the different image classes, 1380: mapping types, and default subfield masks. Also added macros for the 1381: "any" subfield mask, and for the mask of the maximum index value. 1382: Expanded struct tme_fb_connection and struct tme_fb_xlat to include 1383: image class, subfield masks, and mapping information. Added 1384: prototypes for tme_fb_xlat_colors_get() and tme_fb_xlat_colors_set(). 1385: 1386: * tme/machine/sun.h: Added a prototype for tme_sun_cgtwo(). 1387: 1388: Wed Mar 23 12:42:56 2005 Matthew Fredette <[email protected]> 1389: 1390: * ic/ieee754/ieee754-ops-auto.sh: Now emit ops for log, log10, and 1391: exp. 1392: 1393: * ic/m68k/m68010.c: TME_ELEMENT_X_NEW_DECL(tme_ic_,m68k,m68010): Now 1394: call tme_m68k_opcodes_init_m68010() to initialize the opcode table. 1395: 1396: * ic/m68k/m68020.c: TME_ELEMENT_X_NEW_DECL(tme_ic_,m68k,m68020): Now 1397: call tme_m68k_opcodes_init_m68020() to initialize the opcode table. 1398: 1399: * ic/m68k/m6888x.c (tme_m68k_fbcc): Fixed a bug in calculating the 1400: target PC; the displacement is always added to the original PC plus 1401: two. Now always take a 32-bit displacement as a proper operand. 1402: 1403: * ic/m68k/m68k-execute.c: Simplified how instructions are decoded and 1404: executed. Now, the first 16-bit instruction word is used to directly 1405: index an array of 32-bit integers, each of which gives the 1406: instruction's function number, the function's arguments, immediate 1407: fetching and EA calculation information, and a single 1408: special-operation escape bit. Only two types of immediate fetches are 1409: supported: a 16-bit fetch, sign-extended to 32 bits, and a 32-bit 1410: fetch. All of this speeds things up dramatically. 1411: [_TME_M68K_STATS]: Keep statistics on executed instructions. 1412: 1413: * ic/m68k/m68k-impl.h: Removed TME_M68K_SIZE_SUBMAP_X, 1414: TME_M68K_SIZE_16U8, TME_M68K_SIZE_16S32, TME_M68K_OPNUM_SUBMAP_X, 1415: TME_M68K_OPNUM_UNDEF, and the list of special opcodes, all of which 1416: were used only in the old opcode maps. 1417: Added macros for the decoded instruction parameters in the new opcode 1418: maps. 1419: Removed the data structures used by the old opcode maps. The EA 1420: register is now a proper IC register. Added statistics to struct 1421: tme_m68k. Removed the declarations of the small immediate arrays. 1422: The small immediates are now proper IC registers. Added declarations 1423: of the different CPUs' opcode maps and their initialization functions, 1424: and the instruction function array. Added declarations for 1425: tme_m68k_bccl(), tme_m68k_bsrl(), tme_m68k_divl() and tme_m68k_mull(). 1426: 1427: * ic/m68k/m68k-insns.c (tme_m68k_bccl): 1428: (tme_m68k_bsrl): 1429: (tme_m68k_link): 1430: (tme_m68k_rtd): Now that the opcode map supports 16-bit immediates 1431: sign-extended to 32 bits, always take a proper 32-bit operand. 1432: 1433: * ic/m68k/m68k-iset.txt: Now that the opcode map supports 16-bit 1434: immediates sign-extended to 32 bits again, make rtd and the 16-bit 1435: versions of link, bsr, bcc, and fbcc take this kind of immediate. 1436: 1437: * ic/m68k/m68k-misc.c (tme_m68k_exception): Now log a message when a 1438: double fault causes a processor halt. 1439: 1440: * ic/m68k/m68k-opmap-make.pl: The initial rewrite of the opcode map 1441: generation resulted in an enormous opcode map source file, and, 1442: because the instruction function pointers were in the map entries 1443: directly, an opcode map array that wasn't 64-bit friendly. 1444: Now, the instruction function pointers are in a small separate array 1445: which is indexed by eight bits in the 32-bit opcode parameter 1446: information, which is all that remains in the opcode map. To make 1447: room for these eight bits, the first EA mode and reg fields are not 1448: stored (and are instead are swapped in by the instruction executer 1449: after the instruction function has been fetched), and the special 1450: operation field has been reduced to a single bit. To shrink the 1451: opcode map sources, we take advantage of the fact that each of the 1452: 1024 aligned sets of 64 opcodes (a "root") uses one of a small number 1453: of patterns to initialize itself (for m68000 through m68020, there are 1454: only 37 such patterns), and we generate a function to initialize the 1455: parameters in that pattern. Also, each CPU uses the previous CPU's 1456: opcode initialization function to initialize the bulk of its opcode 1457: map, making changes only as needed. 1458: All of this has reduced the size of the opcode map source file 1459: dramatically. 1460: Also, support for 16-bit immediates, sign-extended to 32 bits, has 1461: been added again. 1462: 1463: Tue Mar 15 02:56:58 2005 Matthew Fredette <[email protected]> 1464: 1465: * ic/m68k/m6888x.c (tme_m68k_fbcc): All 16-bit immediates are now 1466: sign-extended to 32-bits in a fixed immediate register. 1467: 1468: * ic/m68k/m68k-insns.c (_tme_m68k_bcc): 1469: (tme_m68k_bccl): 1470: (_tme_m68k_bsr): 1471: (tme_m68k_bsrl): Added. 1472: (tme_m68k_bcc): Now just use _tme_m68k_bcc. 1473: (tme_m68k_bsr): Now just use _tme_m68k_bsr. 1474: (tme_m68k_link): Now handle the 16-bit variant explicitly. 1475: (tme_m68k_rtd): Now handle our 16-bit argument correctly. 1476: (tme_m68k_mull): 1477: (tme_m68k_divl): Added. 1478: 1479: Thu Mar 10 13:29:42 2005 Matthew Fredette <[email protected]> 1480: 1481: * ic/m68k/m68010.c: Now define _TME_M68K_EXECUTE_OPMAP to 1482: tme_m68k_opcodes_m68010 when compiling the executors. 1483: TME_ELEMENT_X_NEW_DECL(tme_ic_,m68k,m68010): No longer call 1484: _tme_m68010_decoder_map_init(). 1485: 1486: * ic/m68k/m68020.c: Now define _TME_M68K_EXECUTE_OPMAP to 1487: tme_m68k_opcodes_m68020 when compiling the executors. 1488: TME_ELEMENT_X_NEW_DECL(tme_ic_,m68k,m68020): No longer call 1489: _tme_m68020_decoder_map_init(). 1490: 1491: * ic/m68k/m68k-insns-auto.sh: cas2 now gets its specop2 as a 16-bit 1492: operand. moves now must do its own memory cycles, and EA 1493: postincrement and predecrement. 1494: Now track memory statistics in the memory functions. 1495: 1496: * ic/m68k/m68k-iset.txt: Many simplifications, and some expansions, to 1497: enable faster instruction dispatching. Eliminated all specops except 1498: for specop16 and fpgen, eliminated the #16S32 immediate type (all 1499: 16-bit immediates are now sign-expanded to 32 bits), and bcc and bsr 1500: are now expanded (multiple iset lines may expand to the same pattern, 1501: with the first one winning, but also with a system of * understood by 1502: m68k-opmap-make.pl to count the correct number of duplicates). 1503: 1504: * ic/m68k/m68k-misc-auto.sh: Now define a 96-bit register for 1505: immediates. Now define registers for the constants zero through 1506: eight. 1507: 1508: * ic/m68k/m68k-misc.c: Removed the small immediates arrays. 1509: (_tme_m68k_connection_break): Now return zero, to silence a warning 1510: (?). 1511: (tme_m68k_new): Increased the instruction burst size to 200. This 1512: dramatically improves performance. Now initialize the small 1513: immediates. 1514: (tme_m68k_redispatch): Count redispatch statistics. 1515: (tme_m68k_tlb_fill): Count TLB fill statistics. 1516: (tme_m68k_dump): No longer display the specop2 value. 1517: 1518: * ic/m68k/m68k-opmap-make.pl (operand_final): Removed. 1519: 1520: * ic/m68k/m68k-opmap-make.pl: Rewritten to support much faster 1521: dispatching of instructions. Now each CPU gets an independent 1522: 64K-entry array, indexed by first instruction word, that yields a 1523: function pointer and 32 bits of parameter information. This 1524: information includes struct tme_m68k-relative offsets for the 1525: function's operands, EA and immediate fetching information, and specop 1526: information. 1527: 1528: Fri Feb 18 04:12:55 2005 Matthew Fredette <[email protected]> 1529: 1530: * bus/multibus/sun-mie.c (_tme_sun_mie_tlb_set_allocate): Atomic 1531: variable changes. 1532: (_tme_sun_mie_tlb_fill): Don't invalidate a TLB entry if it happens to 1533: be the same as the one we're filling. 1534: 1535: * bus/multibus/sun-sc.c (_tme_sun_sc_bus_cycle_dma): Fixed a bug where 1536: we would do 16-bit accesses in 8-bit mode. 1537: (_tme_sun_sc_intack): Added. 1538: (_tme_sun_sc_cycle_new): 1539: (_tme_sun_sc_callout): 1540: (_tme_sun_sc_bus_cycle_data_reg): 1541: (_tme_sun_sc_bus_cycle_icr): 1542: (_tme_sun_sc_scsi_cycle): Mostly mechanical changes to support the new 1543: events/actions SCSI bus interface. 1544: (_tme_sun_sc_connection_make_scsi): No longer get any predefined SCSI 1545: sequences. 1546: (_tme_sun_sc_connections_new): No longer provide a predefined SCSI 1547: sequence function. 1548: (tme_bus_multibus,sun_sc): Added support for the "vme" argument. 1549: 1550: * generic/fb-xlat-auto.sh: Fixed a serious bug where we would decide 1551: that FIFOs are always aligned, even when the FIFO's bits per pixel 1552: value isn't known at compile time. 1553: Fixed a bug where xlat_run would get decremented during every loop 1554: iteration, instead of only after every translated source 32-bit word. 1555: When the loop isn't unrolled for source pixels, this causes xlat_run 1556: to go negative too early, which can stop translation. 1557: 1558: * generic/scsi.c (tme_scsi_connection_score): No longer score based on 1559: a predefined SCSI sequence function. 1560: 1561: * ic/m68k/Makefile.am: Now build the m6888x support, which depends on 1562: the ieee754 support. 1563: 1564: * ic/m68k/m68k-impl.h: 1565: * tme/ic/m68k.h: Added m6888x support. 1566: 1567: * ic/m68k/m68k-iset.txt: Added the floating-point instructions. 1568: 1569: * ic/m68k/m68k-misc.c (_tme_m6888x_enable): Added. 1570: (_tme_m68k_connection_score): A bus must not provide an m6888x enable 1571: function. 1572: (_tme_m68k_connections_new): A m68k provides an m6888x enable 1573: function. 1574: (tme_m68k_new): Now pass FPU arguments to tme_m68k_fpu_new(), and 1575: display the FPU usage with tme_m68k_fpu_usage(). 1576: (tme_m68k_do_reset): Reset any FPU. 1577: 1578: * machine/sun2/SUN2-MULTIBUS: Make the bpf attachment for ie0 delay 1579: packets slightly. This works around a sleep/wakeup race condition in 1580: the NetBSD kernel RARP code. 1581: Changed the type of the bwtwo from obmem to multibus, since the bwtwo 1582: implementation is now common to all sun machines. 1583: 1584: * machine/sun3/SUN3-CARRERA: Now define an unknown-compliance m68881. 1585: Now use the revision 3.0 ROM. 1586: Increased the size of the VME bus to the full 4GB. Commented out the 1587: sc0 attachment, in favor of the new si0 attachment. 1588: To support stock NetBSD 1.6*, make the Emulex tape respond to INQUIRY 1589: commands in a normal way. 1590: 1591: * machine/sun3/sun3-control.c (_tme_sun3_control_cycle_handler): Call 1592: out changes to the FPU and DVMA enable bits. Silently ignore an 1593: attempt to enable the Sun FPA. 1594: 1595: * machine/sun3/sun3-impl.h: Now track the active DVMA TLBs, so that 1596: they can be invalidated when DVMA is enabled or disabled. Atomic 1597: variable fixes, and a prototype for _tme_sun3_mmu_sdvma_change(). 1598: 1599: * machine/sun3/sun3-mmu.c (_tme_sun3_cycle_dummy): 1600: (_tme_sun3_sdvma_disabled): 1601: (_tme_sun3_mmu_sdvma_change): Added. 1602: (_tme_sun3_bus_tlb_fill): Now track TLB entries filled for DVMA space. 1603: Entries that are filled while DVMA is disabled generate a VME bus 1604: fault. For now, bus cycles to unmapped DVMA addresses are ignored. 1605: (_tme_sun3_tlb_fill_mmu): Apparently the magic obio mapping of the 1606: PROM works over a PROM-sized region starting at 0x100000. Made some 1607: changes to silence -Wuninitialized. 1608: (_tme_sun3_mmu_tlb_set_allocate): Atomic variable changes. 1609: 1610: * scsi/scsi-bus.c: Replaced the idea of a SCSI sequence with the much 1611: simpler idea of a bus agent waiting for one or more SCSI events to 1612: happen, then taking one or more SCSI actions. 1613: (_tme_scsi_bus_callout): Now call out the events triggered and actions 1614: taken to the connection. 1615: (_tme_scsi_bus_cycle): Now take the events to wait on and the actions 1616: to take from the connection. A connection waits until one of its 1617: events triggers, then some part of its actions are taken. There is 1618: now support for half and full SCSI bus arbitration, and reselection. 1619: (_tme_scsi_bus_sequence_get): Removed. 1620: (_tme_scsi_bus_connection_score): 1621: (_tme_scsi_bus_connections_new): We can't provide a predefined 1622: sequence function any more, or score a connection based on one. 1623: 1624: * scsi/scsi-device.c (_tme_scsi_device_callout): 1625: (_tme_scsi_device_cycle): More or less mechanical changes to support 1626: the new events/actions SCSI bus interface. Fixed a bug where we would 1627: go past the end of the message dispatch array for IDENTIFY messages. 1628: (tme_scsi_device_connections_new): Removed the predefined SCSI 1629: sequence member assignment. 1630: 1631: * scsi/scsi-tape.c (tme_scsi_tape_cdb_inquiry): It looks like 1632: nonexistent LUNs are reported as "unsupported", and not "not present". 1633: Now identify as a SCSI-1 device, and be sure not to return more data 1634: than the initiator requested. 1635: 1636: * tme/common.h: Now declare _tme_volatile. 1637: Added some missing parentheses to _TME_FIELD_DEPOSIT(). Fixed a bug 1638: in the definition of the tme_value64_uint32s[] member of union 1639: tme_value64. 1640: Added definitions for tme_value64_imul() and tme_value64_idiv(). 1641: 1642: * tme/generic/Makefile.am: Now install float.h. 1643: 1644: * tme/generic/bus.h: Now define TME_BUS_SIGNAL_DRQ and 1645: TME_BUS_SIGNAL_DACK. 1646: 1647: * tme/generic/scsi.h: Now define TME_SCSI_ID_SELECTED() and 1648: TME_SCSI_ID_RESELECTED(), to determine if an ID is being selected or 1649: reselected. Replaced the idea of a SCSI sequence with the much 1650: simpler idea of a bus agent waiting for one or more SCSI events to 1651: happen, then taking one or more SCSI actions. 1652: 1653: * tme/ic/Makefile.am: Now install i825x6.h and ieee754.h. 1654: 1655: * tme/machine/sun.h: Added a prototype for tme_sun_si(). 1656: 1657: * tme/scsi/scsi-device.h: Removed the old predefined SCSI sequences 1658: from struct scsi_device. 1659: 1660: * tme/scsi/scsi-msg.h: Now define TME_SCSI_MSG_IDENTIFY_LUN_MASK, for 1661: getting the LUN out of an IDENTIFY message. 1662: 1663: * tmesh/tmesh-input.y: Now define YYMAXDEPTH, to silence -Wundef. 1664: 1665: Thu Feb 17 13:42:44 2005 Matthew Fredette <[email protected]> 1666: 1667: * Makefile.am: Added tools/ to SUBDIRS, and dist/ to EXTRA_DIST. 1668: Added a dist-hook target to clean the CVS directories out of dist/. 1669: 1670: * acinclude.m4 (AC_CHECK_FLOAT_FORMAT): 1671: (AC_CHECK_FLOAT_LIMITS): Added. 1672: 1673: * configure.in: Bumped version to 0.4. 1674: Now check for limits.h and float.h. Check for volatile, float, 1675: double, and long double, and the signal handler type. 1676: Added ieee754 and ncr5380 to the list of sun3 ICs. When using gcc, 1677: now use -Wundef when compiling with warnings, and set the no strict 1678: aliasing flag. Add the floating point format configuration to 1679: tmeconfig.h. 1680: 1681: * generic/Makefile.am: Now build float.c and float-auto.c, and include 1682: float-auto.sh and float-auto.c in the distribution. 1683: 1684: * generic/bus-el.c generic/bus.c machine/sun/sun-mmu.c 1685: machine/sun/sun-obie.c machine/sun2/sun2-impl.h 1686: machine/sun2/sun2-mmu.c tme/atomics.h tme/generic/bus.h 1687: tme/machine/sun.h: 1688: 1689: Cleaned up atomic variables. Now atomic variables declared with 1690: TME_ATOMIC and TME_ATOMIC_POINTER_TYPE are volatile. To do this 1691: right, TME_ATOMIC_POINTER_TYPE changed to take just the base type 1692: pointed to, so there has been some fallout. 1693: 1694: * generic/float-auto.sh generic/float.c ic/ncr5380.c 1695: ic/ieee754/Makefile.am ic/ieee754/ieee754-misc-auto.sh 1696: ic/ieee754/ieee754-misc.c ic/ieee754/ieee754-ops-auto.sh 1697: ic/ieee754/ieee754-precision.sh ic/ieee754/softfloat-tme.c 1698: ic/ieee754/softfloat-tme.h ic/m68k/m6888x-auto.sh ic/m68k/m6888x.c 1699: machine/sun/sun-si.c tme/generic/float.h tme/ic/ieee754.h 1700: tools/Makefile.am: 1701: 1702: Added. 1703: 1704: * host/posix/posix-disk.c (tme_host_posix,disk): Only probe for the 1705: block size if the device is a character device. If we have mmap 1706: support, the block size for all devices must be some multiple of the 1707: page size - this fixes a bug where we would try to mmap() 1708: non-page-sized regions at non-page boundaries. 1709: 1710: * ic/Makefile.am: Added ieee754 to the list of distribution 1711: subdirectories. Now build ncr5380.c. 1712: Added i825x6reg.h to the list of i825x6 sources. 1713: 1714: * ic/m68k/m68020.c (_tme_m68020_exception): 1715: (_tme_m68020_rte): Fixed bugs in the handling of bus fault frames for 1716: instruction fetches. Previously, we would always fault on stage B, 1717: and only on stage C for a 32-bit fetch. This was supposed to be the 1718: other way around. Also, an address error doesn't set a fault bit, 1719: only a rerun bit. 1720: 1721: * ic/m68k/m68k-execute.c (_TME_M68K_EXECUTE_NAME): Fixed some bugs 1722: caught by gcc -Wuninitialized. 1723: 1724: * ic/m68k/m68k-opmap-make.pl: Fixed a bug where the illegal opcode 1725: wouldn't get the 'illegal' specop. 1726: 1727: * libtme/threads-sjlj.c [HAVE_GTK]: Define G_ENABLE_DEBUG if it isn't 1728: defined, to silence -Wundef. 1729: 1730: * machine/sun/sun-mmu.c (tme_sun_mmu_tlb_fill): Fixed a serious bug 1731: where any page marked as modified was given out as writable, even if 1732: it wasn't marked as writable. SunOS likes to set page table entries 1733: that are modified, but not writable, and this bug was preventing 1734: proper copy-on-write behavior. 1735: 1736: * machine/sun2/Makefile.am: No longer build sun2-bwtwo.c. 1737: 1738: * machine/sun2/sun2-bwtwo.c: Removed. 1739: 1740: * machine/sun2/sun2-mainbus.c (_tme_sun2_connections_new): Fixed bugs 1741: in forming the list of free buses. 1742: (tme_machine_sun2,zs): Now use the standard Sun z8530 socket 1743: definition. 1744: (tme_machine_sun2,bwtwo): Added. 1745: 1746: * machine/sun3/sun3-mainbus.c (_tme_sun3_bus_signal): Apparently, 1747: SunOS likes to set both the level 5 and level 7 clock interrupt enable 1748: bits. The level 5 bit seems to take precedence. 1749: (_tme_sun3_connection_score): Insist on a m68020 or better. 1750: (tme_machine_sun3,si): Added. 1751: 1752: * scsi/emulexmt02.c (_tme_emulexmt02_cdb_request_sense): Fixed a bug 1753: where we weren't putting the Emulex error code in the sense. 1754: (_tme_emulexmt02_cdb_inquiry): Added a hack to make this tape usable 1755: to install SunOS 4.1.1. 1756: (tme_scsi_tape_emulexmt02_init): If the user specified a vendor of 1757: EMULEX, use the normal INQUIRY CDB handling, instead of returning the 1758: useless Emulex INQUIRY data. Now return an illegal command for a 1759: RESERVE CDB. 1760: 1761: Thu Feb 17 02:14:57 2005 Matthew Fredette <[email protected]> 1762: 1763: * ic/m68k/m68k-insns.c (tme_m68k_bfffo): Fixed a bug where we were 1764: using ffs(), which finds the least significant bit set, and not the 1765: most significant bit set. Now find the most significant bit set. 1766: 1767: * ic/m68k/m68k-verify.c (_tme_m68k_verify_end): Added better support 1768: for verifying bitfield instructions. Don't try to verify 1769: floating-point instructions. 1770: (tme_m68k_verify_end_branch): Now leave the m68k structure unchanged. 1771: 1772: * machine/sun/Makefile.am: Added sun-fb.h and sun-si.c to the sources 1773: list. Added tme-sun-eeprom.pl to the distribution. 1774: 1775: Wed Jan 26 13:13:29 2005 Matthew Fredette <[email protected]> 1776: 1777: * host/gtk/gtk-display.h: If G_ENABLE_DEBUG isn't defined, define it 1778: to zero. Some GTK installations apparently require this. 1779: 1780: * host/gtk/gtk-screen.c (_tme_gtk_screen_mode_change): Allocate a 1781: GdkImage with the extra scanlines needed to hold the overtranslation 1782: that the automatically generated functions do. 1783: 1784: * ic/isil7170.c: Include <time.h> and not <sys/types.h> to get struct 1785: tm. 1786: 1787: * ic/m68k/m68020.c (_tme_m68020_exception): Store the memory Z buffer. 1788: (_tme_m68020_rte): Restore the memory Z buffer. 1789: 1790: * libtme/module.c (tme_module_open): Fixed a bug where were freeing 1791: the tokens array twice. 1792: 1793: * scsi/scsi-msg.c (tme_scsi_device_msg_identify): Now set the 1794: addressed LUN. 1795: 1796: Sun Jan 16 01:24:37 2005 Matthew Fredette <[email protected]> 1797: 1798: * ic/m68k/m68k-execute.c (_TME_M68K_EXECUTE_NAME): Added support for 1799: executing floating-point general instructions. 1800: 1801: Fri Jan 14 12:27:41 2005 Matthew Fredette <[email protected]> 1802: 1803: * dist/softfloat/processors/386-GCC.h 1804: dist/softfloat/processors/SPARC-GCC.h 1805: dist/softfloat/softfloat/README.txt 1806: dist/softfloat/softfloat/SoftFloat-history.txt 1807: dist/softfloat/softfloat/SoftFloat-source.txt 1808: dist/softfloat/softfloat/SoftFloat.txt 1809: dist/softfloat/softfloat/timesoftfloat.txt 1810: dist/softfloat/softfloat/bits32/softfloat-macros 1811: dist/softfloat/softfloat/bits32/softfloat.c 1812: dist/softfloat/softfloat/bits32/timesoftfloat.c 1813: dist/softfloat/softfloat/bits32/386-Win32-GCC/Makefile 1814: dist/softfloat/softfloat/bits32/386-Win32-GCC/milieu.h 1815: dist/softfloat/softfloat/bits32/386-Win32-GCC/softfloat-specialize 1816: dist/softfloat/softfloat/bits32/386-Win32-GCC/softfloat.h 1817: dist/softfloat/softfloat/bits32/SPARC-Solaris-GCC/Makefile 1818: dist/softfloat/softfloat/bits32/SPARC-Solaris-GCC/milieu.h 1819: dist/softfloat/softfloat/bits32/SPARC-Solaris-GCC/softfloat-specialize 1820: dist/softfloat/softfloat/bits32/SPARC-Solaris-GCC/softfloat.h 1821: dist/softfloat/softfloat/bits32/templates/Makefile 1822: dist/softfloat/softfloat/bits32/templates/milieu.h 1823: dist/softfloat/softfloat/bits32/templates/softfloat-specialize 1824: dist/softfloat/softfloat/bits32/templates/softfloat.h 1825: dist/softfloat/softfloat/bits64/softfloat-macros 1826: dist/softfloat/softfloat/bits64/softfloat.c 1827: dist/softfloat/softfloat/bits64/timesoftfloat.c 1828: dist/softfloat/softfloat/bits64/386-Win32-GCC/Makefile 1829: dist/softfloat/softfloat/bits64/386-Win32-GCC/milieu.h 1830: dist/softfloat/softfloat/bits64/386-Win32-GCC/softfloat-specialize 1831: dist/softfloat/softfloat/bits64/386-Win32-GCC/softfloat.h 1832: dist/softfloat/softfloat/bits64/SPARC-Solaris-GCC/Makefile 1833: dist/softfloat/softfloat/bits64/SPARC-Solaris-GCC/milieu.h 1834: dist/softfloat/softfloat/bits64/SPARC-Solaris-GCC/softfloat-specialize 1835: dist/softfloat/softfloat/bits64/SPARC-Solaris-GCC/softfloat.h 1836: dist/softfloat/softfloat/bits64/templates/Makefile 1837: dist/softfloat/softfloat/bits64/templates/milieu.h 1838: dist/softfloat/softfloat/bits64/templates/softfloat-specialize 1839: dist/softfloat/softfloat/bits64/templates/softfloat.h: 1840: 1841: Import of SoftFloat Release 2b. 1842: 1843: * dist/softfloat/softfloat/bits32/softfloat.c: 1844: * dist/softfloat/softfloat/bits64/softfloat.c: Added the tme/softfloat 1845: glue and removed some unused variables. 1846: 1847: Fri Jan 14 11:44:18 2005 Matthew Fredette <[email protected]> 1848: 1849: * machine/sun/tme-sun-eeprom.pl: Make selftest-#megs default to zero. 1850: * tools/tme-binary-struct.pl.in: When standard input is a terminal, we 1851: don't read any input. 1852: 1853: Thu Aug 19 12:27:24 2004 Matthew Fredette <[email protected]> 1854: 1855: * TODO: Updated. 1856: 1857: * acinclude.m4 (AC_CHECK_SHIFTSIGNED): Added. 1858: 1859: * configure.in: Use AC_CHECK_SHIFTSIGNED() to see if right shifts of 1860: signed integrals preserve sign. 1861: Added support for sun3 systems. 1862: 1863: * generic/bus-el.c (_tme_bus_intack): If a device doesn't acknowledge 1864: interrupts, return any user-specified vector on the bus connection 1865: before falling back to the undefined vector. 1866: (_tme_bus_connections_new): Now allow the user to specify a vector on 1867: the bus connection. 1868: (tme_generic,bus): Added a hack that allows the user to specify a 4GB 1869: bus on a 32-bit system. 1870: 1871: * ic/Makefile.am: Now build tme_ic_isil7170.la. 1872: 1873: * ic/i825x6.c (_tme_i825x6_callout_cu): Added a missing break 1874: statement to a switch arm. 1875: 1876: * ic/isil7170.c ic/m68k/m68020.c machine/sun/sun-bwtwo.c 1877: machine/sun/sun-fb.c machine/sun/sun-fb.h machine/sun/sun-obie.c 1878: machine/sun/tme-sun-eeprom.pl machine/sun3/Makefile.am 1879: machine/sun3/SUN3-CARRERA machine/sun3/sun3-control.c 1880: machine/sun3/sun3-impl.h machine/sun3/sun3-mainbus.c 1881: machine/sun3/sun3-mmu.c tme/ic/isil7170.h 1882: tools/tme-binary-struct.pl.in: 1883: 1884: Added. 1885: 1886: * ic/m68k/Makefile.am: Removed an inadvertent m68k-verify.c from 1887: tme_ic_m68k_la_SOURCES. 1888: 1889: * ic/m68k/Makefile.am: Now compile m68020.c. 1890: 1891: * ic/m68k/m68k-misc.c (tme_m68000_exception_process): 1892: (tme_m68020_exception_process): For illegal instruction exceptions, 1893: now use the line A or line F vector as appropriate. 1894: (tme_m68k_rte_start): Added some TME_M68K_SEQUENCE_RESTARTING 1895: protection. 1896: 1897: * libtme/threads-sjlj.c: Removed the unused 1898: tme_sjlj_thread_cond_notified field from the thread structure. 1899: (tme_sjlj_thread_create): Initialize the thread's linkage in the 1900: timeout list. 1901: 1902: * machine/Makefile.am: Added the sun3 directory to DIST_SUBDIRS. 1903: 1904: * machine/sun/Makefile.am: Now build sun-bwtwo.c, sun-fb.c, and 1905: sun-obie.c for libtme_machine_sun.la. 1906: Now make the tme-sun-eeprom script. 1907: 1908: * machine/sun/sun-keyboards.txt: Added a map for the type 3 keyboard. 1909: 1910: * machine/sun/sun-mmu.c (tme_sun_mmu_tlb_fill): Don't invalidate the 1911: old TLB entry if it happens to be the same one we're filling. 1912: 1913: * tme/common.h: Now define TME_FIELD_MASK_EXTRACTU and the internal 1914: _TME_FIELD_MASK_FACTOR, for extracting field values using a mask. 1915: 1916: * tme/generic/bus.h: Now define TME_BUS_CYCLE_SYNCHRONOUS_EVENT. Now 1917: track a single interrupt vector for a connection, for those 1918: connections that only use a single, nonprogrammable vector. 1919: 1920: * tme/ic/Makefile.am: Now install isil7170.h. 1921: 1922: * tme/machine/sun.h: To allow for more code sharing, now define 1923: TME_SUN_Z8530_SIZE and TME_SUN_Z8530_SOCKET_INIT. Added prototypes 1924: for tme_sun_obie() and tme_sun_bwtwo(). 1925: 1926: Wed Aug 11 12:30:28 2004 Matthew Fredette <[email protected]> 1927: 1928: * ic/m68k/m68010.c: Removed GROUPn_ from the TME_M68K_EXCEPTION_ macro 1929: names, since those group numbers applied to only the 68000 and 68010. 1930: Also added the new TME_M68K_VECTOR_ macros. 1931: 1932: * ic/m68k/m68k-execute.c (_TME_M68K_EXECUTE_NAME): Fixed problems with 1933: the way that tracing is handled, to enable support for 68020 tracing 1934: and its new trace exception frame format. Fixed a bug in the code 1935: that detects a 32-bit branch. Fixed a bug in decoding the divul and 1936: mulul extension words. Added missing declarations for some variables 1937: used in 68020 effective address calculation. 1938: 1939: * ic/m68k/m68k-impl.h: Replaced TME_M68K_FLAG_T with TME_M68K_FLAG_T0 1940: and TME_M68K_FLAG_T1, and use them wherever possible. Removed the 1941: GROUPn_ from the TME_M68K_EXCEPTION_ macros, since the original group 1942: numbers were specific to the 68000 and 68010. Added more exception 1943: frame format identifier macros. Added new macros for the exception 1944: vectors. 1945: (TME_M68K_INSN_BRANCH): 1946: (TME_M68K_INSN_CHANGE_SR): Improved tracing support. 1947: 1948: * ic/m68k/m68k-insns-auto.sh: The old asr expansion (which was the 1949: same as the lsr expansion, but with a signed operand and result) had 1950: bugs and also required that right shifts of a signed operand be 1951: arithmetic. Added a new expansion that fixes these problems. 1952: Removed the _GROUPn from the TME_M68K_EXCEPTION_ macro names, since 1953: the group numbers were specific to the 68000 and 68010. Also added 1954: the new TME_M68K_VECTOR_ macros. 1955: In the bus-cycle functions, recognize the 1956: TME_BUS_CYCLE_SYNCHRONOUS_EVENT pseudo-error, and make it force the 1957: executer to check external events before executing the next 1958: instruction. 1959: 1960: * ic/m68k/m68k-insns.c: Removed the _GROUPn from the 1961: TME_M68K_EXCEPTION_ macro names, since the group numbers were specific 1962: to the 68000 and 68010. Also added the new TME_M68K_VECTOR_ macros. 1963: Where applicable, store the current PC as the last PC before setting 1964: the next PC as the current PC. This supports format 2 exception 1965: frames, which stack the address of the instruction that caused the 1966: exception. 1967: (tme_m68k_movec): Added support for the 68020 control registers. 1968: 1969: * ic/m68k/m68k-misc-auto.sh: Create registers for the next program 1970: counter, the 68020 cacr and caar, and the always-zero register. 1971: 1972: * ic/m68k/m68k-misc.c: Removed the _GROUPn from the 1973: TME_M68K_EXCEPTION_ macro names, since the group numbers were specific 1974: to the 68000 and 68010. Also added the new TME_M68K_VECTOR_ macros. 1975: (_tme_m68k_bus_interrupt): 1976: (tme_m68k_external_check): Implement a system that prevents NMI from 1977: being repeatedly accepted. If the interrupt priority mask is already 1978: seven, only accept an NMI on a transition from deasserted to asserted. 1979: (tme_m68k_new): Now set the mask of T bits used by the processor. 1980: (tme_m68k_do_reset): Now clear the E and F bits in the 68020 cacr. 1981: Fixed a bug where we loaded the initial SSP and PC from supervisor 1982: data space instead of the correct supervisor program space. 1983: (tme_m68k_change_sr): Only recognize the M bit on a 68020 or greater, 1984: and fixed bugs in the selection of the correct stack pointer control 1985: register. 1986: (tme_m68k_exception_process): Renamed to tme_m68000_exception_process, 1987: since the grouping and priority it implements are specific to the 1988: 68000 and 68010. 1989: (tme_m68020_exception_process): Added. 1990: (tme_m68k_bitfield_offset): Simplified the bitfield byte offset 1991: calculation for negative bit offsets. 1992: (tme_m68k_bitfield_width): Don't bother masking a bitfield width that 1993: was encoded in the instruction; it can't be greater than 31. 1994: (_tme_m68k_bitfield_read): If the bitfield is in memory, note that the 1995: current instruction can fault. Fixed bugs where we assumed that 1996: TME_BIT(32) is zero mod 2^32, when it may be 1 because of shift 1997: limiting, which would cause us to fail to mask and/or sign-extend a 1998: 32-bit bitfield value correctly. 1999: (tme_m68k_bitfield_write_unsigned): Fixed a bug where we wouldn't mask 2000: the value we were given before setting the flags. Fixed bugs where we 2001: assumed that TME_BIT(32) is zero mod 2^32, when it may be 1 because of 2002: shift limiting. If the bitfield is in memory, note that the current 2003: instruction can fault. 2004: 2005: * ic/m68k/m68k-verify.c (tme_m68k_verify_mem_any): Fixed a bug where 2006: we wouldn't properly verify transfers of endianless data. 2007: (tme_m68k_verify_init): Now set up a full 32-bit address space. 2008: (_tme_m68k_verify_end): Store %a7 back in its proper stack pointer 2009: control register, so we can verify changes to the control registers. 2010: Ignore extra verifier memory reads on bitfield instructions; the 2011: verifier bitfield implementation often reads addresses not covered by 2012: the bitfield. 2013: 2014: Mon May 17 11:57:01 2004 Matthew Fredette <[email protected]> 2015: 2016: * host/bsd/bsd-bpf.c: Added support for the "delay" option, which 2017: delays all incoming packets for a user-specified number of 2018: microseconds. 2019: (_tme_bsd_bpf_read): Fixed a bug where a TME_ETHERNET_READ_PEEK read 2020: would discard the read packet. 2021: 2022: Fri May 14 00:56:19 2004 Matthew Fredette <[email protected]> 2023: 2024: * host/bsd/bsd-bpf.c: Removed the unused tme_bsd_bpf_cond_writer 2025: structure member. 2026: (tme_host_bsd,bpf): Fixed a bug where we weren't initializing the 2027: tme_bsd_bpf_conf_reader condition. 2028: 2029: Tue May 11 12:03:36 2004 Matthew Fredette <[email protected]> 2030: 2031: * ic/i825x6.c: Added some logging. 2032: (_tme_i825x6_callout_ru): Don't set the B bit in RFD status fields. 2033: 2034: * libtme/misc.c (_tme_misc_number_parse): Some changes to silence gcc 2035: -Wuninitialized. 2036: 2037: Tue May 04 01:17:27 2004 Matthew Fredette <[email protected]> 2038: 2039: * bus/multibus/sun-mie.c: 2040: * ic/i825x6.c: 2041: * ic/i825x6reg.h: 2042: * tme/ic/i825x6.h: Added. 2043: 2044: * machine/sun2/SUN2-MULTIBUS: Added commands to create ie0. 2045: 2046: Fri Apr 30 12:11:36 2004 Matthew Fredette <[email protected]> 2047: 2048: * bus/multibus/3c400.c bus/multibus/sun-sc.c generic/bus-el.c 2049: ic/am9513.c ic/z8530.c ic/m68k/m68k-insns.c ic/m68k/m68k-misc.c 2050: machine/sun2/sun2-mainbus.c tme/generic/bus.h: 2051: 2052: Reworked bus signals in several ways: Added the notion of the bus 2053: signals set. Every bus should support multiple device-specific bus 2054: signals sets, added by elements connecting to the bus. This enables 2055: elements to pass these device-specific bus signals to each other. 2056: Now bus signals are only specified as either asserted or negated, 2057: and devices almost never signal edges. For devices that only drive 2058: signals either high or low, you can exclusive-or 2059: TME_BUS_SIGNAL_LEVEL_ASSERTED with either TME_BUS_SIGNAL_LEVEL_HIGH 2060: or TME_BUS_SIGNAL_LEVEL_LOW as appropriate, and provide that to the 2061: device such that the device only needs to exclusive-or that with the 2062: signal level to get the right asserted or negated level. Also 2063: expanded the number of generic bits in a signal value, and improved 2064: the set of macros used to compose and decompose signal values. 2065: 2066: * bus/multibus/sun-sc.c generic/bus.c ic/m68k/m68k-misc.c 2067: machine/sun/sun-mmu.c tme/generic/bus.h: 2068: 2069: Made changes to the TLB protocol, to better support reentrant 2070: devices. Now, a TLB entry passed to a fill function is expected to 2071: be local on the stack, and it "reserves" the real, backing TLB entry 2072: in the device's state. This prevents the case where a device tries 2073: to fill the same backing TLB entry at the same time in two or more 2074: threads. TLB fill functions for devices that need to invalidate 2075: outstanding TLBs always invalidate the backing TLB entry. After a 2076: TLB fill has finished, the caller checks its reservation on the 2077: real, backing TLB, and copies the local TLB back if the reservation 2078: has not been broken. Devices that want to use a TLB entry 2079: immediately after the fill function returns must use the local TLB, 2080: since it cannot have been invalidated yet. Also made fixes to TLB 2081: entry users that avoid rereading fields that are destroyed by 2082: invalidation, after the device has committed to using the TLB entry, 2083: since invalidation can happen at any time. Also made the TLB 2084: tme_bus_tlb_emulator_off_read member const. 2085: 2086: * generic/Makefile.am: 2087: * generic/bus-device.c: 2088: * tme/generic/bus-device.h: Added generic bus-device support for real 2089: bus interfaces and bus-mastering. 2090: 2091: Fri Apr 30 01:46:01 2004 Matthew Fredette <[email protected]> 2092: 2093: * TODO: Updated. 2094: 2095: * configure.in: Added the i825x6 to the list of ICs for the sun2. 2096: 2097: * bus/multibus/Makefile.am: Now compile sun-mie.c. 2098: 2099: * ic/Makefile.am: Now build tme_ic_i825x6.la. 2100: 2101: * tme/common.h: Added the TME_X_VERSION versioning macros. Simplified 2102: the definition of TME_RANGES_OVERLAP. 2103: 2104: * tme/generic/ethernet.h: Now define TME_ETHERNET_LENGTH_SIZE and 2105: TME_ETHERNET_HEADER_SIZE. 2106: 2107: * tme/ic/m68k.h: Removed the ancient tme_m68k_tlb_bus_wrlock_on_read 2108: macro. 2109: 2110: Sun Mar 28 23:38:28 2004 Matthew Fredette <[email protected]> 2111: 2112: * generic/bus-device-auto.sh: Added. 2113: 2114: Fri Feb 20 12:42:11 2004 Matthew Fredette <[email protected]> 2115: 2116: * ic/m68k/m68k-execute.c [_TME_M68K_EXECUTE_FAST]: Make the fast 2117: emulator load pointers const. 2118: 2119: Fri Jan 09 03:42:48 2004 Matthew Fredette <[email protected]> 2120: 2121: * generic/bus-el.c ic/am9513.c ic/m68k/m68k-misc.c 2122: machine/sun2/sun2-mainbus.c tme/generic/bus.h: 2123: 2124: Increased the possible number of signal flag bits. 2125: (TME_BUS_SIGNAL_WHICH): Renamed to TME_BUS_SIGNAL_INDEX, all callers 2126: changed, and added a new macro with the same old name that simply 2127: masks off the signal flag bits. 2128: (TME_BUS_SIGNAL_WHICH_INT): Renamed to TME_BUS_SIGNAL_INDEX_INT, all 2129: callers changed. 2130: 2131: * generic/bus.c (tme_bus_addr_parse_any): Now use 2132: tme_misc_unumber_parse_any(). 2133: 2134: * generic/disk.c (tme_disk_dimension_parse): Now use 2135: tme_misc_unumber_parse(). 2136: 2137: * generic/fb-xlat-auto.sh: No longer emit some pixel-doubling code in 2138: optimized translation functions for formats for 24 or more bits per 2139: pixel, because that code would expand to shifts of more than 32 bits, 2140: tripping gcc -Werror. 2141: 2142: * host/gtk/gtk-screen.c (_tme_gtk_gdkimage_bipp): Fixed a bug where 2143: this would fail when bipp > depth, which is common on deep 2144: framebuffers. 2145: 2146: * libtme/misc.c (_tme_misc_number_parse): 2147: (tme_misc_unumber_parse_any): 2148: (tme_misc_number_parse_any): 2149: (tme_misc_unumber_parse): 2150: (tme_misc_number_parse): Added. 2151: 2152: * tme/misc.h: Added prototypes for tme_misc_unumber_parse_any, 2153: tme_misc_number_parse_any, tme_misc_unumber_parse, and 2154: tme_misc_number_parse. 2155: 1.1.1.2 root 2156: Wed Oct 29 02:03:26 2003 Matthew Fredette <[email protected].> 2157: 2158: * Release 0.2 out. 1.1 root 2159: 1.1.1.2 root 2160: * host/gtk/gtk-screen.c: Some quick changes for GTK 2 compatibility. 1.1 root 2161: 1.1.1.2 root 2162: Sat Oct 25 17:08:02 2003 Matthew Fredette <[email protected]> 2163: 2164: * ic/am9513.c ic/mm58167.c ic/z8530.c ic/z8530reg.h 2165: ic/m68k/m68k-execute.c ic/m68k/m68k-insns.c ic/m68k/m68k-iset.txt 2166: ic/m68k/m68k-misc.c ic/m68k/m68k-verify.c tmesh/tmesh-cmds.c 2167: tmesh/tmesh-util.c: 2168: 2169: RCS Id, header comment, and license sweep. 2170: 2171: Thu Oct 16 03:02:11 2003 Matthew Fredette <[email protected]> 2172: 2173: * configure.in: Now check for size_t. 2174: Now make sure that <net/bpf.h> defines BIOCSHDRCMPLT before deciding 2175: that bpf support is present. 2176: 2177: * generic/bus.c generic/keyboard.c host/bsd/bsd-bpf.c 2178: host/bsd/bsd-if.c host/gtk/gtk-display.h host/gtk/gtk-keyboard.c 2179: host/posix/posix-tape.c ic/am9513.c ic/m68k/m68k-impl.h 2180: libtme/log-prf.c machine/sun2/sun2-mmu.c scsi/scsi-cdb.c 2181: scsi/scsi-tape.c serial/kb-sun.c serial/serial-kb.c 2182: serial/serial-ms.c tme/generic/keyboard.h tme/scsi/scsi-device.h 2183: tmesh/tmesh-cmds.c tmesh/tmesh.c: 2184: 2185: Fixed many small bugs caught by the gcc3 -Wall -Wuninitialized. 2186: 2187: * host/posix/posix-disk.c: Fixed various type problems found by gcc3. 2188: 2189: * scsi/acb4000.c (_tme_acb4000_cdb_bad): Fixed a bug where we set the 2190: amount of valid sense to TRUE instead of to a byte count. 2191: 2192: * scsi/scsi-bus.c (_tme_scsi_bus_cycle): Work around an aliasing 2193: warning. 2194: 2195: * tme/common.h: Fixed a bug where tme_value64_set had a conditional 2196: with two different result types. 2197: When included by the implementation, now try to bring in standard 2198: headers to get string and memory function prototypes. Added an 2199: incomplete list of prototypes for when standard headers aren't 2200: available. 2201: 2202: Mon Sep 29 11:42:56 2003 Matthew Fredette <[email protected]> 2203: 2204: * generic/fb-xlat-auto.sh: Added many comments, clarified some obscure 2205: code, and fixed a bug where unoptimized halving translators wouldn't 2206: shift the source FIFOs by two pixels when they had to. 2207: 2208: Wed Sep 10 01:49:22 2003 Matthew Fredette <[email protected]> 2209: 2210: * generic/fb-xlat-auto.sh: Fixed various bugs when the destination 2211: FIFOs may not be aligned, and when doubling. These bugs were mostly 2212: found by inspection, and the fixes haven't been tested. 2213: 2214: Mon Sep 01 14:58:57 2003 Matthew Fredette <[email protected]> 2215: 2216: * configure.in: Changed the version number. 2217: Now only build the bsd host modules on BSD-like systems. 2218: 2219: * generic/keyboard.c (_tme_keyboard_buffer_in0): Now examine any 2220: keycode on the user's event to determine if an earlier press of a 2221: different keysym from the same keycode has actually released. 2222: 2223: * host/gtk/gtk-display.h: Now keep a mapping from keysym to keycode, 2224: for those keysyms that can only be generated by one keycode. 2225: 2226: * host/gtk/gtk-keyboard.c (_tme_gtk_keyboard_x11_new): 2227: (_tme_gtk_keyboard_key_event): 2228: (_tme_gtk_keyboard_new): Now keep a mapping from keysym to keycode, 2229: for those keysyms that can only be generated by one keycode, and add 2230: that keycode to key events. 2231: 2232: * host/posix/posix-tape.c: Some changes to silence gcc 2233: -Wuninitialized. 2234: 2235: * host/posix/posix-tape.c (_tme_posix_tape_xfer1): When we hit the end 2236: of the media, don't try to skip ahead to a nonexistent next segment. 2237: 2238: * libtme/hash.c (_tme_hash_lookup_internal): When the lookup succeeds, 2239: be sure to return the handle the bucket. 2240: 2241: * libtme/log.c: Fixed many of the non-stdarg declarations of the 2242: variable-argument functions. 2243: 2244: * machine/sun2/SUN2-MULTIBUS: Now set a fixed key rate on kbd0, to 2245: work around a bug in NetBSD where only the first of simultaneously 2246: received keycodes will be processed. 2247: 2248: * serial/serial-kb.c (_tme_serial_kb_callout): Cleaned up the code 2249: that translates keyboard events into serial data, and added support 2250: for rate-limiting. 2251: (_tme_serial_kb_th_rate): Added. 2252: (_tme_serial_kb_serial_read): 2253: ((tme_serial_,kb,keyboard): Added support for rate-limiting. 2254: 2255: * serial/serial-kb.h: Added various members to control rate-limiting. 2256: 2257: * tme/generic/keyboard.h: A keyboard event for a keysym can now 2258: include the related keycode. This is for handling the case of a key 2259: release giving a different keysym than the key press did because 2260: modifiers changed in between. 2261: 2262: Sat Aug 23 13:50:34 2003 Matthew Fredette <[email protected]> 2263: 2264: * generic/Makefile.am: Be sure to distribute fb-xlat-auto.sh. 2265: * generic/keyboard.c (_tme_keyboard_debug): 2266: (tme_keyboard_buffer_new): Changes to support logging debug messages. 2267: 2268: * host/gtk/Makefile.am: 2269: * serial/Makefile.am: 2270: * tme/generic/Makefile.am: Added some headers that weren't getting 2271: distributed. 2272: 2273: * host/gtk/gtk-keyboard.c (_tme_gtk_keyboard_new): Allow the keyboard 2274: buffer to log messages using our log handle. 2275: 2276: * host/posix/posix-tape.c: Changes to silence various gcc warnings. 2277: 2278: * libtme/module.c: Added a hack to support older installed libltdls 2279: that don't define lt_ptr. 2280: 2281: * libtme/threads-sjlj.c: Fixed uses of struct fd_set. 2282: 2283: * tme/common.h: Now include <netinet/in.h> for the byteswapping 2284: functions. 2285: 2286: * tme/generic/keyboard.h: Users can now give a log handle to the 2287: keyboard buffer, for logging debug messages. 2288: 2289: Fri Aug 22 16:39:30 2003 Matthew Fredette <[email protected]> 2290: 2291: * serial/serial-kb.c (tme_serial_,kb,keyboard): Give the element's log 2292: handle to the keyboard buffer, to enable debugging. 2293: 2294: Tue Aug 12 23:00:40 2003 Matthew Fredette <[email protected]> 2295: 2296: * machine/sun/Makefile.am: Now install sun-keyboards.txt and 2297: my-sun-macros.txt. 2298: 2299: * machine/sun/my-sun-macros.txt: 2300: * machine/sun/sun-keyboards.txt: Added. 2301: 2302: * machine/sun2/Makefile.am: Removed some old targets and dependencies. 2303: 2304: * machine/sun2/SUN2-MULTIBUS: Reorganized and added more comments. 2305: As-is, this now represents the common case of local disk, no network. 2306: 2307: Fri Aug 08 13:33:45 2003 Matthew Fredette <[email protected]> 2308: 2309: * tmesh/tmesh.c (main): Added support for the --noninteractive option. 2310: Fixed a bug where we wouldn't report meaningful file and line number 2311: information on early errors. 2312: 2313: Thu Aug 07 22:14:46 2003 Matthew Fredette <[email protected]> 2314: 2315: * bus/multibus/sun-sc.c (_tme_sun_sc_bus_cycle_data_reg): Added. 2316: (_tme_sun_sc_bus_cycle_data): 2317: (_tme_sun_sc_bus_cycle_cmd_stat): Now use 2318: _tme_sun_sc_bus_cycle_data_reg to run the bus cycle. 2319: (_tme_sun_sc_tlb_fill): The data register can't allow fast reading. 2320: 2321: * host/posix/posix-disk.c (_tme_posix_disk_buffer_get): Now honor a 2322: device's block size. 2323: (tme_host_posix,disk): If the disk image is a character device, see if 2324: it has a minimum block size. 2325: 2326: * host/posix/posix-tape.c (__tme_posix_tape_command): Fixed a bug 2327: where an error return value wouldn't get returned. Fixed a bug where 2328: a LOAD control would get called out even when an error occured during 2329: loading. 2330: 2331: * scsi/emulexmt02.c: Replaced blocksize with block_size for 2332: consistency. 2333: (_tme_emulexmt02_cdb_block_limits): Added. 2334: (tme_scsi,tape): Now handle the BLOCK LIMITS command. 2335: 2336: * scsi/scsi-cdb.c (tme_scsi_device_cdb_illegal): Added. 2337: (_tme_scsi_device_make_inquiry_string): Added. 2338: (tme_scsi_device_make_inquiry_data): Added. 2339: (tme_scsi_device_cdb_inquiry): Removed. 2340: 2341: * scsi/scsi-device.c (tme_scsi_device_address_lun_aware): Always allow 2342: an INQUIRY command, even for a LUN that isn't defined. 2343: (tme_scsi_device_new): Set a NULL handler for the INQUIRY command by 2344: default. 2345: 2346: * scsi/scsi-disk.c: Renamed the tme-scsi-2 disk type to tme-scsi-1, to 2347: reflect that it's a SCSI-1 disk. 2348: (tme_scsi_disk_cdb_inquiry): Added. 2349: (tme_scsi_disk_cdb_mode_sense): 2350: (tme_scsi_disk_cdb_start_stop): 2351: (tme_scsi_disk_cdb_prevent_allow): 2352: (tme_scsi_disk_cdb_read_capacity): Crudely implemented these commands. 2353: (tme_scsi_disk_cdb_read1): 2354: (tme_scsi_disk_cdb_write1): Implemented these commands. 2355: (_tme_scsi_disk_control): Made public. 2356: (_tme_scsi_disk_connection_break): Made public. 2357: (_tme_scsi_disk_connection_make): Made public. 2358: (_tme_scsi_disk_connections_new): Made public. 2359: (tme_scsi,disk): Install the disk handler for the INQUIRY command. 2360: 2361: * scsi/scsi-tape.c (tme_scsi_tape_cdb_inquiry): Added. 2362: (tme_scsi_tape_cdb_load_unload): 2363: ((tme_scsi_tape_cdb_prevent_allow): Made these command handlers do 2364: nothing, for now. 2365: (tme_scsi,tape): Install the tape handler for the INQUIRY command. 2366: 2367: * tme/generic/disk.h: Define some disk controls. 2368: 2369: * tme/scsi/scsi-cdb.h: Define various macros, types, and prototypes 2370: for generating INQUIRY response data. 2371: 2372: * tme/scsi/scsi-disk.h: Added some prototypes for some now-public 2373: functions. 2374: 2375: * tme/scsi/scsi-tape.h: Added a prototype for 2376: tme_scsi_tape_cdb_inquiry. 2377: 2378: Tue Aug 05 03:41:31 2003 Matthew Fredette <[email protected]> 2379: 2380: * bus/multibus/sun-sc.c (_tme_sun_sc_scsi_cycle): If we're not 2381: starting DMA, be sure to call out a wait-change cycle instead, 2382: otherwise we can miss SCSI bus transitions. 2383: 2384: * generic/Makefile.am: Now compile tape.c 2385: 2386: * generic/tape.c host/posix/posix-tape.c scsi/emulexmt02.c 2387: scsi/scsi-tape.c tme/generic/tape.h tme/scsi/scsi-tape.h: 2388: 2389: Added. 2390: 2391: * host/posix/Makefile.am: Now compile posix-tape.c. 2392: 2393: * ic/z8530.c (_tme_z8530_bus_cycle): Added support for the WR0 reset 2394: Rx interrupt command. 2395: 2396: * ic/m68k/m68k-impl.h: Now always declare tme_m68k_verify_hook. 2397: 2398: * ic/m68k/m68k-insns-auto.sh: Fixed a bug in the V bit calculation in 2399: the asl insns. 2400: 2401: * ic/m68k/m68k-misc.c (tme_m68k_verify_hook): Now always compile this 2402: function. 2403: 2404: * ic/m68k/m68k-verify.c (_tme_m68k_verify_end): Ignore the T bits when 2405: verifying %sr. 2406: 2407: * machine/sun2/SUN2-MULTIBUS: Updated. 2408: 2409: * scsi/Makefile.am: Now compile emulexmt02.c and scsi-tape.c. 2410: 2411: * scsi/acb4000.c (_tme_acb4000_address_lun): When marking a 2412: nonextended sense as valid we now have to indicate how many bytes it 2413: contains. 2414: 2415: * scsi/acb4000.c: 2416: * tme/scsi/scsi-device.h: Fixed a comment. 2417: 2418: * scsi/scsi-bus.c (_tme_scsi_bus_cycle): Now be more universal about 2419: remembering the last SCSI bus state we called out to each connection, 2420: and call out whenever that state changes and the connection wants a 2421: callout. When a connection gives us an empty DMA sequence, instead of 2422: aborting just immediately call out. When a connection is in a DMA 2423: sequence and the bus gets reset, try to reset on behalf of the 2424: connection. 2425: 2426: * scsi/scsi-cdb.c (tme_scsi_device_cdb_request_sense): Now require 2427: that the valid marker for nonextended senses give the length of the 2428: sense. 2429: 2430: * scsi/scsi-device.c (tme_scsi_device_target_phase): Now log up to 128 2431: bytes of output in various phases. 2432: (_tme_scsi_device_cycle): Now log short transfers. 2433: (tme_scsi_device_target_dsmf): Fixed a comment. 2434: 2435: * scsi/scsi-disk.c (_tme_scsi_disk_connections_new): Fixed a usage 2436: string. 2437: (tme_disk,new): Fixed a comment. 2438: 2439: * serial/ms-mssystems.c: Removed the 3-byte packet support, since it's 2440: apparently only found on the Tadpole SPARCbooks. 2441: 2442: * serial/serial-ms.c (_tme_serial_ms_serial_config): Now store the 2443: peer's serial configuration. 2444: 2445: * serial/serial-ms.h: Now store the peer's serial configuration. 2446: 2447: * tme/connection.h: Now define TME_CONNECTION_TAPE. 2448: 2449: * tme/generic/Makefile.am: Now install tape.h. 2450: 2451: * tme/scsi/Makefile.am: Now install scsi-tape.h. 2452: 2453: Thu Jul 31 19:03:16 2003 Matthew Fredette <[email protected]> 2454: 2455: * scsi/scsi-bus.c (_tme_scsi_bus_cycle): Fixed some uses of dma_in to 2456: dma; caught by gcc -Wuninitialized. 2457: 2458: * tmesh/tmesh-cmds.c (_tmesh_command_log): Wrapped some otherwise 2459: unused declarations in !TME_NO_LOG. 2460: 2461: Thu Jul 31 01:47:46 2003 Matthew Fredette <[email protected]> 2462: 2463: * generic/Makefile.am: Now compile mouse.c. 2464: 2465: * generic/fb.c (tme_fb_xlat_best): Fixed a bug where we wouldn't 2466: reject translation functions that don't match the question. 2467: 2468: * generic/keyboard.c: Fixed a comment. 2469: 2470: * generic/mouse.c host/gtk/gtk-mouse.c serial/ms-mssystems.c 2471: serial/serial-ms.c serial/serial-ms.h tme/generic/mouse.h: 2472: 2473: Added. 2474: 2475: * host/gtk/Makefile.am: Now compile gtk-mouse.c. 2476: 2477: * host/gtk/gtk-display.c: 2478: * host/gtk/gtk-display.h: 2479: * host/gtk/gtk-keyboard.c: Many changes to add mouse support. 2480: 2481: * host/gtk/gtk-screen.c: Many changes to improve the user interface. 2482: Now include a menu for changing the scaling factor. Fixed bugs with 2483: respect to event masks, mostly by adding an event box. 2484: 2485: * ic/z8530.c (_tme_z8530_callout): Fixed a bug that caused us to never 2486: check the callouts on channel B. 2487: 2488: * ic/m68k/m68k-insns.c (tme_m68k_reset): Added a crude implementation 2489: of the reset instruction. 2490: 2491: * machine/sun2/SUN2-MULTIBUS: Updated. 2492: 2493: * machine/sun2/sun2-mainbus.c (_tme_sun2_bus_signal): Instead of 2494: aborting, just ignore the RESET signal from the CPU for now. 2495: 2496: * serial/Makefile.am: Now compile serial-ms.c and ms-mssystems.c. 2497: 2498: * tme/connection.h: Now define TME_CONNECTION_MOUSE. 2499: 2500: Tue Jul 29 18:33:14 2003 Matthew Fredette <[email protected]> 2501: 2502: * Makefile.am: 2503: * tme/Makefile.am: Added scsi to SUBDIRS. 2504: 2505: * configure.in: If long on the target is 64-bits, use it as our 64-bit 2506: type. Substitute the scsi Makefiles. 2507: 2508: * bus/multibus/3c400.c (TME_3C400_CSR_PUT_3c400): Corrected a 2509: tme_betoh_u16 into a tme_htobe_u16. 2510: 2511: * bus/multibus/Makefile.am: Now compile sun-sc.c. 2512: 2513: * bus/multibus/sun-sc.c generic/disk.c generic/scsi.c 2514: host/posix/posix-disk.c scsi/Makefile.am scsi/acb4000.c 2515: scsi/disk-tme.c scsi/scsi-bus.c scsi/scsi-cdb.c scsi/scsi-device.c 2516: scsi/scsi-disk.c scsi/scsi-msg.c tme/generic/disk.h 2517: tme/generic/scsi.h tme/scsi/Makefile.am tme/scsi/scsi-cdb.h 2518: tme/scsi/scsi-device.h tme/scsi/scsi-disk.h tme/scsi/scsi-msg.h: 2519: 2520: Added. 2521: 2522: * generic/Makefile.am: Now compile disk.c and scsi.c. 2523: 2524: * generic/bus-device.c: 2525: * generic/bus-el.c: Fixed a comment. 2526: 2527: * host/posix/Makefile.am: Now compile posix-disk.c. 2528: 2529: * host/posix/posix-memory.c: 2530: * host/posix/posix-serial.c: Fixed comments. 2531: 2532: * ic/mm58167.c: Fixed many significant problems with this emulation, 2533: most notably that the size of the chip was not calculated correctly at 2534: all. We now report with microsecond resolution, since SunOS's probe 2535: routine requires this. 2536: 2537: * ic/z8530.c (_tme_z8530_intack): Simplified and fixed bugs in how 2538: variable interrupt vectors are computed. For now, since there's no 2539: emulation of the IEI pin, we just behave as if it's always tied low, 2540: so we never put any vector on the bus during a hard interrupt 2541: acknowledge. 2542: (_tme_z8530_bus_cycle): Now ignore all WR0 CRC reset commands. Now 2543: support the WR0 transmitter reset command. Now support reads of RR10 2544: and RR14. 2545: 2546: * ic/m68k/m68k-insns-auto.sh: The movem instructions cannot fault when 2547: the register mask is zero. Now that we generally have a 64-bit type 2548: available, fixed various bugs in the 64-bit multiply and divide 2549: instructions. 2550: 2551: * ic/m68k/m68k-insns.c (tme_m68k_movec): Now appropriately mask values 2552: loaded into control registers. movec only has a long version, and 2553: SunOS on the Sun-2 doesn't necessarily clear the remainder of the data 2554: register it uses to load %sfc and %dfc. 2555: 2556: * ic/m68k/m68k-misc.c (tme_m68k_exception_process_start): Fixed a bug 2557: where the T bits weren't cleared. This bug was found by SunOS on the 2558: sun2, which starts at least init in usermode with tracing enabled. 2559: 2560: * ic/m68k/m68k-verify.c (tme_m68k_verify_init): Now assume that the 2561: CPU generates 28-bit addresses. SunOS 3 on the Sun-2 does this. 2562: 2563: * machine/sun/tme-sun-idprom.pl: Added support for the obscure 2564: Roadrunner-MB1. 2565: 2566: * machine/sun2/sun2-bwtwo.c: Fixed various comments. 2567: Because SunOS's probe routine fails otherwise, added support for the 2568: entire 2KB page starting at the CSR to appear undecoded, i.e., to look 2569: like the CSR repeated 1024 times. 2570: 2571: * machine/sun2/sun2-impl.h: Now define TME_SUN2_DVMA_SIZE_MBMEM and 2572: TME_SUN2_DVMA_SIZE_VME. 2573: Now make struct tme_sun2_bus_connection public, since the bus DVMA TLB 2574: filler needs to know which bus it's filling for. 2575: 2576: * machine/sun2/sun2-mainbus.c (_tme_sun2_connections_new): When making 2577: the connections for the mbmem or vme buses, be sure to set the last 2578: address that we decode on the bus, for DVMA purposes. 2579: 2580: * machine/sun2/sun2-mmu.c (_tme_sun2_bus_tlb_fill): Fixed many bugs 2581: involving filling TLB entries for bus's DVMA regions. 2582: (_tme_sun2_mmu_pte_set): Added a missing protection. 2583: 2584: * tme/common.h: Added some crude support for 64-bit math, even for 2585: compilers that offer no 64-bit type at all. 2586: 2587: * tme/connection.h: Now define TME_CONNECTION_SCSI and 2588: TME_CONNECTION_DISK. 2589: 2590: * tme/generic/Makefile.am: Added more headers. 2591: 2592: * tme/generic/bus-device.h: Corrected a comment. 2593: 2594: * tme/generic/ic.h: Corrected the 64-bit support. 2595: 2596: * tmesh/tmesh-cmds.c (_tmesh_command_log): Added. 2597: 2598: * tmesh/tmesh-impl.h: Now define TMESH_COMMAND_LOG. 2599: 2600: * tmesh/tmesh-input.y: Added support for parsing the `log' command. 2601: 2602: Tue Jul 22 18:30:31 2003 Matthew Fredette <[email protected]> 2603: 2604: * generic/fb-xlat-auto.sh: Changes to silence gcc -Wuninitialized. 2605: * host/gtk/gtk-keyboard.c (_tme_gtk_keyboard_lookup): Changes to 2606: silence gcc -Wuninitialized. 2607: 2608: * libtme/module.c (tme_module_open): Changes to silence gcc 2609: -Wuninitialized. 2610: 2611: * libtme/threads-sjlj.c (tme_sjlj_dispatch): Declared some locals 2612: volatile to silence gcc's setjmp-related warning. 2613: 2614: Fri Jun 27 21:30:37 2003 Matthew Fredette <[email protected]> 2615: 2616: * Makefile.am: Added the serial directory to SUBDIRS. 2617: * configure.in: Many changes to support framebuffer emulation and X11 2618: and gtk elements. Also added some serial elements support. 2619: 2620: * generic/Makefile.am: Now create fb-xlat-auto.c and build fb.c and 2621: keyboard.c. 2622: 2623: * generic/bus-device.c: 2624: * generic/bus-el.c: 2625: * generic/bus.c: Although I hate doing this, various changes to 2626: support a single bus connection connecting to a bus region sparsely. 2627: 2628: * generic/fb-xlat-auto.sh: Now declare src_bypb to include one more 2629: extra line of data, to make a total of two. 2630: Fixed a bug where translating and halving would really translate every 2631: line twice. Now when we reach the end of a line we skip the next 2632: line, to move to the next pair of lines. 2633: 2634: * generic/fb.c generic/keyboard.c host/gtk/Makefile.am 2635: host/gtk/gtk-display.c host/gtk/gtk-display.h 2636: host/gtk/gtk-keyboard.c host/gtk/gtk-screen.c libtme/hash.c 2637: machine/sun2/sun2-bwtwo.c serial/Makefile.am serial/kb-sun.c 2638: serial/serial-kb.c serial/serial-kb.h tme/hash.h tme/misc.h 2639: tme/generic/fb.h tme/generic/keyboard.h: 2640: 2641: Added. 2642: 2643: * generic/keyboard.c: Disabled debug output. 2644: 2645: * host/Makefile.am: Added gtk to DIST_SUBDIRS. 2646: 2647: * ic/am9513.c (_tme_am9513_th_timer): Removed a newline from a log 2648: statement. 2649: 2650: * ic/z8530.c (_tme_z8530_channel_reset): Fixed an incorrect reset 2651: value for RR3. 2652: (_tme_z8530_config): Simply ignore a peer's request to change the 2653: serial configuration. 2654: 2655: * ic/m68k/m68k-execute.c: To fix a problem where m68k execution could 2656: possibly never yield (by oscillating back and forth between fast and 2657: slow execution, for example) we make sure that we never run more than 2658: _tme_m68k_instruction_burst before checking for external interrupts 2659: and yielding. 2660: 2661: * ic/m68k/m68k-impl.h: Now in addition to _tme_m68k_instruction_burst, 2662: the maximum burst length, there is 2663: _tme_m68k_instruction_burst_remaining, which is the maximum number of 2664: instructions remaining in the current burst. 2665: 2666: * ic/m68k/m68k-iset-expand.pl: 2667: * ic/m68k/m68k-opmap-make.pl: Made the RCS keywords, copyright and 2668: license like other files. 2669: 2670: * ic/m68k/m68k-misc.c (tme_m68k_new): Now initialize the new 2671: _tme_m68k_instruction_burst_remaining struct member. 2672: 2673: * libtme/Makefile.am: Now compile hash.c, and use the GTK CFLAGS. 2674: 2675: * libtme/misc.c (tme_misc_tokenize): 2676: (tme_free_string_array): Added. 2677: 2678: * libtme/module.c (tme_module_open): Now use tme_misc_tokenize to 2679: tokenize. 2680: 2681: * libtme/threads-sjlj.c: Although I hate doing this, many changes to 2682: support using the GTK event loop. 2683: 2684: * machine/sun2/Makefile.am: Now build sun2-bwtwo.c. 2685: 2686: * machine/sun2/SUN2-MULTIBUS: Added commands to create a real physical 2687: console. 2688: 2689: * machine/sun2/sun2-mainbus.c (_tme_sun2_bus_intack): Now acknowledge 2690: interrupts on the obmem bus too, since the bwtwo z8530s are there. 2691: 2692: * tme/Makefile.am: Now install misc.h and hash.h. 2693: 2694: * tme/common.h: Now define tme_letoh_u16() and tme_letoh_u32(x). 2695: Declare tme_free_string_array(). 2696: 2697: * tme/connection.h: Add connection types for keyboards and 2698: framebuffers. 2699: 2700: * tme/threads.h: Under _TME_HAVE_GTK, declare tme_threads_gtk_init. 2701: 2702: * tme/tme.h: Now include <tme/hash.h> and <tme/misc.h>. 2703: 2704: * tme/generic/Makefile.am: Now install fb.h and keyboard.h. 2705: 2706: * tme/generic/bus-device.h: 2707: * tme/generic/bus.h: Changes to support a single bus connection 2708: connecting to a bus region sparsely. 2709: 2710: * tmesh/Makefile.am: Now link with the GTK libraries. 2711: 2712: Fri Jun 27 01:37:57 2003 Matthew Fredette <[email protected]> 2713: 2714: * generic/fb-xlat-auto.sh: Added. 2715: 2716: Thu Jun 26 13:16:12 2003 Matthew Fredette <[email protected]> 2717: 2718: * tme/generic/ic.h: Fixed grammar in a comment. 2719: 2720: Sun May 18 02:40:56 2003 Matthew Fredette <[email protected]> 2721: 2722: * configure.in: Changed the version number to 0.0; this is very alpha. 2723: There are now fewer include directories under tme/; many unnecessary 2724: headers that belonged to modules were removed. 2725: 2726: * bus/multibus/3c400.c: No longer include <tme/bus/multibus/3c400.h>. 2727: 2728: * bus/multibus/Makefile.am generic/Makefile.am host/bsd/Makefile.am 2729: host/posix/Makefile.am ic/Makefile.am ic/m68k/Makefile.am 2730: libtme/Makefile.am machine/sun/Makefile.am machine/sun2/Makefile.am 2731: tmesh/Makefile.am: 2732: 2733: Added library and module versioning. 2734: 2735: * host/bsd/bsd-bpf.c: 2736: * host/bsd/bsd-if.c: Now include "bsd-impl.h" instead of 2737: <tme/host/bsd.h>. 2738: 2739: * host/bsd/bsd-impl.h: 2740: * machine/sun/tme-sun-idprom.pl: Added. 2741: 2742: * machine/sun2/SUN2-MULTIBUS: Changed the extension on the PROM and 2743: IDPROM files from .dat to .bin. 2744: 2745: * machine/sun2/SUN2-MULTIBUS: Changed the name of the PROM filename to 2746: match the documentation. 2747: 2748: * tme/Makefile.am: Removed the host and bus include directories; they 2749: don't exist anymore. 2750: 2751: Sat May 17 20:34:07 2003 Matthew Fredette <[email protected]> 2752: 2753: * acinclude.m4: Added an RCS Id and a short comment. 2754: * configure.in: Added an RCS Id, the copyright, and license. Do a 2755: real path search for perl. 2756: 2757: * libtme/log-prf.c: 2758: * libtme/module.c: 2759: * machine/sun2/sun2-mainbus.c: Changes to silence gcc -Wuninitialized. 1.1 root 2760: 2761: Fri May 16 21:48:16 2003 Matthew Fredette <[email protected]> 2762: 1.1.1.2 root 2763: * Makefile.am TODO acconfig.h configure.in modules bus/Makefile.am 2764: bus/multibus/3c400.c bus/multibus/Makefile.am generic/Makefile.am 2765: generic/bus-device.c generic/bus-el.c generic/bus.c 2766: host/bsd/Makefile.am host/bsd/bsd-bpf.c host/posix/Makefile.am 2767: host/posix/posix-memory.c host/posix/posix-serial.c ic/Makefile.am 2768: ic/am9513.c ic/mm58167.c ic/z8530.c ic/m68k/Makefile.am 2769: ic/m68k/m68010.c ic/m68k/m68k-impl.h ic/m68k/m68k-insns-auto.sh 2770: ic/m68k/m68k-misc.c libtme/Makefile.am libtme/alloc.c 2771: libtme/element.c libtme/log-prf.c libtme/log.c libtme/misc.c 2772: libtme/module.c libtme/threads-sjlj.c machine/Makefile.am 2773: machine/sun/Makefile.am machine/sun/sun-mmu.c 2774: machine/sun2/Makefile.am machine/sun2/SUN2-MULTIBUS 2775: machine/sun2/sun2-impl.h machine/sun2/sun2-mainbus.c 2776: machine/sun2/sun2-mmu.c tme/Makefile.am tme/common.h 2777: tme/connection.h tme/element.h tme/log.h tme/module.h tme/tme.h 2778: tme/tmesh.h tme/generic/bus-device.h tme/generic/bus.h 2779: tme/ic/am9513.h tme/ic/m68k.h tme/ic/mm58167.h tme/ic/z8530.h 2780: tmesh/Makefile.am tmesh/tmesh-cmds.c tmesh/tmesh-impl.h 2781: tmesh/tmesh-input.y tmesh/tmesh-util.c tmesh/tmesh.c: 2782: 2783: By far, this is the worst bulk commit I've ever done. Many changes 2784: to simplify the element interface as much as possible, to do modules 2785: better, and to do logging better. Fixed a small number of actual 2786: bugs. Also converted to modern autoconf and automake, because the 2787: module support requires modern libtool. Also added the main libtme, 2788: libtmesh, and tmesh itself. 2789: 2790: * ic/m68k/m68k-verify.c: Now include <stdio.h>. 1.1 root 2791: 2792: Fri May 16 17:50:17 2003 Matthew Fredette <[email protected]> 2793: 1.1.1.2 root 2794: * acinclude.m4 (AC_CHECK_ALIGNOF): Now takes only a size, in bits, to 2795: check the alignment for. Before, it used to take a string of the form 2796: intN_t, which wouldn't work on systems that don't define an intN_t 2797: type. When cross-compiling, assume the target requires alignment 2798: equal to the size. Now use AC_DEFINE_UNQUOTED's third argument to 2799: specify the config.h.in comment. 2800: (AC_CHECK_SHIFTMAX): Added. 2801: (AC_SYS_SOCKADDR_SA_LEN): Now use AC_DEFINE_UNQUOTED's third argument 2802: to specify the config.h.in comment. 1.1 root 2803: 2804: Thu May 15 15:52:08 2003 Matthew Fredette <[email protected]> 2805: 1.1.1.2 root 2806: * ic/m68k/m68k-insns-auto.sh: Fixed bugs in the shift and rotate 2807: insns, where we might try to shift by an amount greater than the 2808: maximum meaningful shift for a given size. 2809: 2810: Sat May 10 15:41:23 2003 Matthew Fredette <[email protected]> 2811: 2812: * acinclude.m4 (AC_CHECK_ALIGNOF): Fixed a bug where this would stop 2813: on the first misalignment, instead of continuing to find the true 2814: minimum alignment. For example, this would have found the minimum 2815: 32-bit alignment to be 4 instead of 2 on a 68000 or 68010, stopping on 2816: the misaligned address 3. 2817: 2818: * configure.in ic/Makefile.am ic/m68k/Makefile.am machine/Makefile.am 2819: machine/sun2/Makefile.am tme/Makefile.am: 2820: 2821: Some early distribution work. 2822: 2823: * ic/m68k/m68k-insns-auto.sh: 2824: * ic/m68k/m68k-misc-auto.sh: Fixed some bad macro and type name 2825: references. 2826: 2827: * ic/m68k/m68k-insns-auto.sh: 2828: * ic/m68k/m68k-misc-auto.sh: Handled the rename of the aligned and 2829: unaligned memory access rwlocking macros, and use the new 2830: tme_memory_sequence_ rwlocking macros. Generally made things a little 2831: easier to read, although we do rely on the optimizer to do the right 2832: thing somewhat more. 2833: 1.1 root 2834: * tme/threads.h: Renamed the memory-access locking functions to be 1.1.1.2 root 2835: tme_memory_HOW_WHATlock, where HOW is aligned or unaligned, and WHAT 2836: is rd or wr. Now define the tme_memory_sequence_WHATlock macros, used 2837: when doing a sequence of memory accesses that must appear to be 2838: atomic. 2839: Now define TME_SEQUENCE_ACCESS_NOT_COSTLIER as TRUE if locking for a 2840: sequence and locking for an aligned access have the same cost, else 2841: define it as FALSE. 1.1 root 2842: 2843: Sat May 10 00:31:32 2003 Matthew Fredette <[email protected]> 2844: 1.1.1.2 root 2845: * ic/m68k/m68k-insns-auto.sh: Overhauled the shift instructions to not 2846: use loops. 2847: 2848: Fri May 09 17:45:06 2003 Matthew Fredette <[email protected]> 2849: 2850: * ic/m68k/m68k-execute.c: As an optimization, now require the 2851: individual insn functions to use TME_M68K_INSN_CANFAULT if they may 2852: fault, instead of figuring out every time if an insn can fault or not. 2853: Check that insn functions have set it if they need it, and left it 2854: unset if they do not need it. 2855: 2856: * ic/m68k/m68k-execute.c: Made some changes to somewhat optimize 2857: certain effective address calculations. 2858: 2859: * ic/m68k/m68k-impl.h: Now define TME_M68K_INSN_CANFAULT. 2860: 2861: * ic/m68k/m68k-impl.h: Renumbered the TME_M68K_SIZE_ macros slightly 2862: to enable an optimization on effective address 2863: predecrement/postincrement calculation. Grew the memory transfer 2864: function arrays to match. 2865: Moved the generic IC data structure to the top of the m68k structure, 2866: to enable register indexing to happen without an offset. 2867: Removed _tme_m68k_areg_increment, it's no longer needed. 2868: 2869: * ic/m68k/m68k-insns-auto.sh: 2870: * ic/m68k/m68k-insns.c: Now use TME_M68K_INSN_CANFAULT where it's 2871: needed. Also fixed some random restarting bugs in some insns. 1.1 root 2872: 1.1.1.2 root 2873: * ic/m68k/m68k-misc.c: Removed _tme_m68k_areg_increment, it's no 2874: longer needed. Grew the memory transfer function arrays to match the 2875: renumbering of the TME_M68K_SIZE_ macros, and added some preprocessor 2876: error checking on those macros. 1.1 root 2877: 1.1.1.2 root 2878: Fri May 09 14:36:16 2003 Matthew Fredette <[email protected]> 1.1 root 2879: 1.1.1.2 root 2880: * bus/multibus/3c400.c generic/bus-device.c generic/bus-el.c 2881: generic/bus.c host/posix/posix-memory.c ic/am9513.c ic/mm58167.c 2882: ic/z8530.c tme/generic/bus-device.h tme/generic/bus.h: 2883: 2884: Bulk change to no longer require bus connections to have a 2885: power-of-two width. This is largely a name change, renaming 2886: address_mask to address_last, as nothing depended on the 2887: address_mask being all-bits-one. 2888: 2889: * bus/multibus/3c400.c (_tme_3c400_callout): Make buffer status values 2890: have the minimum Ethernet frame size. 2891: 2892: * ic/am9513.c: Now include <stdio.h>, in case 2893: TME_AM9513_TRACK_INT_RATE is defined. 2894: 2895: * ic/am9513.c: Under TME_AM9513_TRACK_INT_RATE, periodically report 2896: the interrupt rates achieved by the various timers. 2897: 2898: * machine/sun2/sun2-mmu.c (_tme_sun2_m68k_tlb_fill): Because 2899: supervisor and user accesses go through different context registers, 2900: TLBs are generally only ever valid for the supervisor or the user, but 2901: not both. Fixed a bug where a TLB for a user-visible page would be 2902: marked as good for the supervisor even if the mapping isn't the same 2903: in the system context. 2904: 2905: * tme/generic/ethernet.h: Now define TME_ETHERNET_CRC_SIZE. 2906: 2907: Thu May 08 23:37:55 2003 Matthew Fredette <[email protected]> 2908: 2909: * ic/m68k/m68k-insns-auto.sh: Fixed bugs, found by the verifier, in 2910: the SR and CCR immediate instructions. 2911: 2912: * ic/m68k/m68k-verify.c: Now keep a short ring of PCs verified. 2913: 2914: Thu May 08 19:22:10 2003 Matthew Fredette <[email protected]> 2915: 2916: * ic/z8530.c (_tme_z8530_intack): Changes to silence -Wuninitialized. 2917: * ic/m68k/Makefile.am: No longer define _TME_M68K_OPW_OK. 2918: * ic/m68k/m68k-execute.c: Changes to support verifying restarted 2919: instructions. 2920: 2921: * ic/m68k/m68k-impl.h: Fixed the definitions of the dummy 2922: tme_m68k_verify_ macros. 2923: 2924: * ic/m68k/m68k-impl.h: Now call tme_m68k_verify_end_branch inside 2925: TME_M68K_INSN_BRANCH. Added a unique identifier member to the 2926: sequence structure. Made a few functions take a const struct tme_m68k 2927: *. Made changes to the verifier to support verifying restarted 2928: instructions. 2929: 2930: * ic/m68k/m68k-insns-auto.sh: Fixed a bug found by the verifier, where 2931: the movem instructions weren't following the EA discipline correctly 2932: and so would transfer to the wrong addresses after a restart. 2933: 2934: * ic/m68k/m68k-misc.c (tme_m68k_go_slow): Now take a const struct 2935: tme_m68k *. 1.1 root 2936: (tme_m68k_sequence_empty): 1.1.1.2 root 2937: (tme_m68k_sequence_fill): Made the argument that's supposed to be 2938: read-only const. Under _TME_M68K_VERIFY, save and restore the 2939: sequence unique identifier. 2940: 2941: * ic/m68k/m68k-verify.c: Many changes to support verifying 2942: instructions that ended only after they were restarted because of one 2943: or more bus faults. 1.1 root 2944: 2945: Thu May 08 13:35:43 2003 Matthew Fredette <[email protected]> 2946: 1.1.1.2 root 2947: * ic/m68k/m68k-execute.c: 2948: * ic/m68k/m68k-impl.h: 2949: * ic/m68k/m68k-misc.c: Replaced _TME_M68K_OPW_OK bits with new 2950: _TME_M68K_VERIFY bits. 2951: 2952: * ic/m68k/m68k-insns-auto.sh: In all memory access functions, added 2953: calls to the verifier. Fixed a bug in the divide routines, found by 2954: the verifier - the N flag in set based on the final small quotient, 2955: not on the big one. 2956: 2957: * ic/m68k/m68k-misc-auto.sh: Now define TME_M68K_IREG32_COUNT. 1.1 root 2958: 1.1.1.2 root 2959: * ic/m68k/m68k-verify.c: Added. 1.1 root 2960: 1.1.1.2 root 2961: Wed May 07 02:37:05 2003 Matthew Fredette <[email protected]> 2962: 2963: * generic/bus-el.c (_tme_bus_connections_new): Store the final bus 2964: interrupt signal number, not the raw ipl. 1.1 root 2965: 2966: * ic/z8530.c: Although I hate doing this, too many changes to go into 1.1.1.2 root 2967: detail. Much work to support interrupt driven operation. 2968: 2969: * ic/z8530reg.h: Added definitions for RR3. 2970: 2971: * ic/m68k/m68k-impl.h: Fixed a serious bug in the TME_M68K_FLAG_SR 2972: definition that would zero part of the interrupt mask. 2973: 2974: * ic/m68k/m68k-insns-auto.sh: Fixed a bug where negx wasn't preserving 2975: the Z flag if the result was zero. 2976: 2977: * machine/sun2/sun2-test.c (main): Fixed a bug where the zs0 ipl arg 2978: was getting lost. 1.1 root 2979: 1.1.1.2 root 2980: Mon May 05 23:20:11 2003 Matthew Fredette <[email protected]> 1.1 root 2981: 1.1.1.2 root 2982: * TODO: Updated. 1.1 root 2983: 1.1.1.2 root 2984: * generic/serial.c (tme_serial_buffer_copyout): Fixed a bug where if 2985: we were copying to a NULL buffer and the copyout wrapped in the ring 2986: buffer, we would do pointer arithmetic on the NULL. 1.1 root 2987: 1.1.1.2 root 2988: * ic/m68k/m68010.c (_tme_m68010_rte): Fixed a bug where we forgot to 2989: recover the group 0 function code and address for the cycle restart. 2990: Fixed a bug where we wouldn't reset to extract our internal state from 2991: the stack buffer. 1.1 root 2992: 1.1.1.2 root 2993: * ic/m68k/m68k-insns-auto.sh: Fixed several instructions that trap or 2994: do trap-like things to update PC to be the PC of the following 2995: instruction before trapping. 2996: (tme_m68k_read_mem): Fixed a memcpy direction bug. 1.1 root 2997: 1.1.1.2 root 2998: * ic/m68k/m68k-insns.c: Fixed several instructions that trap or do 2999: trap-like things to update PC to be the PC of the following 3000: instruction before trapping. 1.1 root 3001: 1.1.1.2 root 3002: * libtme/threads-sjlj.c (tme_sjlj_cond_notify): Fixed a bug where we 3003: would cancel a thread's wait condition instead of notifying the 3004: thread. 1.1 root 3005: 1.1.1.2 root 3006: * machine/sun/sun-mmu.c (tme_sun_mmu_tlb_fill): Support the new 3007: expansive MMU PTE protections. 1.1 root 3008: 1.1.1.2 root 3009: * machine/sun2/sun2-mainbus.c (_tme_sun2_bus_intack): Now acknowledge 3010: soft interrupts. 3011: (tme_machine_sun2_clock_new): Fixed a bug where we had the Timer 2 3012: output miswired. 1.1 root 3013: 1.1.1.2 root 3014: * machine/sun2/sun2-mmu.c: Many changes to support the new full 3015: understanding of sun2 PTE protections. 1.1 root 3016: 1.1.1.2 root 3017: * tme/machine/sun.h: Expanded on the generic PTE protections, to 3018: support the more expressive sun2 protections. 1.1 root 3019: 1.1.1.2 root 3020: Sun May 04 22:46:12 2003 Matthew Fredette <[email protected]> 1.1 root 3021: 1.1.1.2 root 3022: * ic/am9513.c (_tme_am9513_counters_disarm): Added. 3023: (_tme_am9513_th_timer): Try to avoid 32-bit integer overflow when 3024: calculating the sleep time. 3025: (_tme_am9513_bus_cycle): Now support the disarm timers command. 1.1 root 3026: 1.1.1.2 root 3027: * ic/mm58167.c: Changes to silence -Wuninitialized. 1.1 root 3028: 1.1.1.2 root 3029: * ic/mm58167.c: 3030: * tme/ic/mm58167.h: Added. 1.1 root 3031: 1.1.1.2 root 3032: * ic/z8530.c: Although I hate doing this, too much work to go into 3033: detail. Did more groundwork for eventually generating interrupts. 1.1 root 3034: 1.1.1.2 root 3035: * ic/m68k/m68k-execute.c: Now wrap the execute hook call in 3036: _TME_M68K_OPW_OK. 1.1 root 3037: 1.1.1.2 root 3038: * ic/m68k/m68k-misc.c (tme_m68k_exception_process_start): Fixed a bug 3039: where the new ipl mask was put into the sr at the wrong position. 3040: 3041: * machine/sun2/sun2-mainbus.c (tme_machine_sun2_tod_new): Added. 3042: 3043: * machine/sun2/sun2-mmu.c (_tme_sun2_obbus_fault_handler): Removed. 1.1 root 3044: (_tme_sun2_bus_fault_handler): 3045: (_tme_sun2_obio_fault_handler): 1.1.1.2 root 3046: (_tme_sun2_obmem_fault_handler): Added. 1.1 root 3047: (_tme_sun2_multibus_fault_handler): Now just call 1.1.1.2 root 3048: _tme_sun2_bus_fault_handler. 3049: (_tme_sun2_tlb_fill_mmu): Use the new bus-specific fault handlers. 3050: 3051: * machine/sun2/sun2-test.c: Now create and connect the TOD chip. 3052: 3053: * tme/ic/Makefile.am: Updated. 1.1 root 3054: 3055: Sat May 03 19:27:07 2003 Matthew Fredette <[email protected]> 3056: 1.1.1.2 root 3057: * TODO: Updated. 3058: 3059: * ic/m68k/m68k-execute.c: Fixed multiple bugs in the handling of brief 3060: EA extension words. 3061: 3062: * ic/m68k/m68k-insns-auto.sh: Fixed a bug where subx and addx didn't 3063: take the (previous) X flag into account when calculating flags. 3064: 3065: * machine/sun2/sun2-control.c (_tme_sun2_control_cycle_handler): Now 3066: call _tme_sun2_ipl_check whenever the enable register is written. 3067: 3068: * machine/sun2/sun2-impl.h: Added macros for the enable register bits. 3069: 3070: * machine/sun2/sun2-mainbus.c (_tme_sun2_ipl_check): Added. 3071: (_tme_sun2_bus_signal): Now call _tme_sun2_ipl_check to update the ipl 3072: driven to the CPU. 3073: 3074: Fri May 02 17:37:10 2003 Matthew Fredette <[email protected]> 3075: 3076: * TODO: Updated. 3077: 3078: * acconfig.h acinclude.m4 bus/multibus/3c400.c 3079: bus/multibus/Makefile.am generic/ethernet.c host/bsd/Makefile.am 3080: host/bsd/bsd-bpf.c host/bsd/bsd-if.c tme/generic/ethernet.h: 3081: 3082: Added. 3083: 3084: * configure.in: Now check for minimum alignments. Now check for 3085: various headers and other things needed by the BSD code. 3086: 3087: * bus/Makefile.am: 3088: * generic/Makefile.am: 3089: * host/Makefile.am: 3090: * tme/generic/Makefile.am: Added support for new components. 3091: 3092: * bus/multibus/3c400.c (_tme_3c400): Some changes to silence 3093: -Wuninitialized. 3094: 3095: * host/posix/posix-serial.c: Fixed some indentation, and one 0 to a 3096: TME_OK. 3097: 1.1 root 3098: * ic/am9513.c (_tme_am9513_counters_load): 1.1.1.2 root 3099: (_tme_am9513_counters_arm): Added. 3100: (_tme_am9513_th_timer): Try to avoid multiplication overflow when 3101: calculating the number of basic ticks that have elapsed. Try to 3102: handle armed and unarmed counters correctly. 3103: (_tme_am9513_bus_cycle): Now load and arm counters correctly. 3104: (tme_ic_am9513_new): Calculate the number of basic ticks in a 3105: millisecond for the benefit of the timer thread. 3106: 3107: * ic/m68k/m68010.c (_tme_m68010_rte): tme_m68k_rte_finish no longer 3108: touches the sequence at all, so before calling it make sure the 3109: sequence is exactly what it's supposed to be. 3110: 3111: * ic/m68k/m68k-execute.c: In the fast executor, assert that the ITLB 3112: entry allows fast reading for the current PC or that the PC is one 3113: greater than the last address covered by the entry. Fixed the 3114: fast-fetch-failed code to more correctly simulate a group 0 exception 3115: and associated RTE. 3116: 3117: * ic/m68k/m68k-insns-auto.sh: Cleaned up and fixed the code generated 3118: for cmpm, addx, and subx. At least, cmpm wasn't getting its address 3119: registers postincremented, and addx and subx weren't treating the Z 3120: flag properly. In the fetch insns, take the address to fetch from as 3121: an argument, instead of using the real ic->tme_m68k_ireg_pc with 3122: tme_m68k_read 1.1 root 3123: (which could actually update it, if recovering from a group 0 3124: exception!) 3125: 1.1.1.2 root 3126: * ic/m68k/m68k-misc-auto.sh: The slow-executor fetch macros now call 3127: the fetch insns with the PC to fetch from. 1.1 root 3128: 1.1.1.2 root 3129: * ic/m68k/m68k-misc.c (tme_m68k_rte_finish): No longer do anything 3130: with the sequence at all, just redispatch it. 3131: (tme_m68k_sequence_fill): Now set the sequence next-transfer to one, 3132: to force a restart in case later code doesn't. 3133: (tme_m68k_insn_buffer_xfer): The insn buffer is kept in host byte 3134: order, not big-endian byte order. 3135: 3136: * libtme/threads-sjlj.c: No longer track and relock a mutex that was 3137: held when tme_sjlj_cond_wait_yield was called; the thread itself will 3138: relock the mutex when it is restarted. 3139: 3140: * machine/sun2/Makefile.am: Now build and link against the Multibus 3141: and BSD libraries. 3142: 3143: * machine/sun2/sun2-test.c (tme_memdup): Added. 3144: (connect_elements): Now start the new convention of initializing the 3145: new-connections lists to NULL and letting the new-connections 3146: functions add elements incrementally. 1.1 root 3147: (main): Now create the ec0 and bpf0 elements and add them to the 1.1.1.2 root 3148: machine. 1.1 root 3149: 1.1.1.2 root 3150: * tme/common.h: Added a macro for tme_dup and a prototype for 3151: tme_memdup. 1.1 root 3152: 1.1.1.2 root 3153: * tme/connection.h: Now define TME_CONNECTION_ETHERNET. 3154: 3155: * tme/threads.h: Fixed a bug where the tme_thread_write macro was 3156: defined to be the read syscall. 1.1 root 3157: 3158: Tue Apr 29 20:28:05 2003 Matthew Fredette <[email protected]> 3159: 1.1.1.2 root 3160: * AUTHORS: 3161: * COPYING: 3162: * NEWS: 3163: * README: Added. 3164: 3165: * generic/bus-device.c generic/bus-el.c host/posix/posix-serial.c 3166: ic/z8530.c ic/m68k/m68k-misc.c machine/sun2/sun2-mainbus.c: 3167: 3168: In all connections_new functions, add the new connection 3169: possibilities to the list rooted at *_conns, instead of always 3170: replacing the list. 3171: 3172: * generic/bus-el.c host/posix/posix-memory.c ic/am9513.c 3173: ic/m68k/m68k-execute.c ic/m68k/m68k-insns-auto.sh 3174: ic/m68k/m68k-insns.c machine/sun2/sun2-mainbus.c: 1.1 root 3175: 1.1.1.2 root 3176: Changes to silence -Wuninitialized. 3177: 3178: * generic/serial.c: 3179: * tme/generic/serial.h: Removed all instances of gen- in comments. 3180: 3181: * host/posix/posix-serial.c (_tme_posix_serial_th_reader): Fixed bugs 3182: in scanning the input for various escape-like sequences, especially 3183: for the escaped break signal. 3184: 3185: * host/posix/posix-serial.c (_tme_posix_serial_th_reader): Simplified 3186: the code that decides to call out that we are readable. 1.1 root 3187: (_tme_posix_serial_ctrl): Always try to call out reads if the 1.1.1.2 root 3188: connection says it's readable, even if we already knew that. 3189: (_tme_posix_serial_read): Fixed a bug where we would clear everything 3190: *except* TME_SERIAL_CTRL_OK_READ, instead of clearing only that bit. 3191: (tme_host_posix_serial_new): Return EINVAL on bad arguments. 3192: 3193: * ic/Makefile.am: Now define DIST_SUBDIRS. 3194: 3195: * ic/z8530.c (_tme_z8530_callout): Fixed a bug where we would use an 3196: uninitialized chan variable to find WR9, which actually only exists in 3197: channel A anyways. 1.1 root 3198: (_tme_z8530_ctrl): Now always try to call out reads if the connection 1.1.1.2 root 3199: says it's readable. 3200: 3201: * libtme/threads-sjlj.c: Wrap all of the rwlock operations in 3202: !TME_NO_DEBUG_LOCKS. 3203: (tme_sjlj_threads_run): Changes to silence -Wuninitialized. 1.1 root 3204: 1.1.1.2 root 3205: * tme/Makefile.am: 3206: * tme/generic/Makefile.am: Now install roughly the correct files into 3207: the correct place. 1.1 root 3208: 1.1.1.2 root 3209: * tme/atomics.h: Fixed a bug where TME_ATOMIC_POINTER_TYPE was adding 3210: an extra *. 1.1 root 3211: 1.1.1.2 root 3212: * tme/element.h: Fixed bugs in the TME_NO_LOG versions of TME_LOG_X 3213: and TME_LOG_FINISH. 3214: 3215: Tue Apr 29 03:24:17 2003 Matthew Fredette <[email protected]> 3216: 3217: * TODO: 3218: * machine/sun2/sun2-test.c: Updated. 3219: 3220: * generic/bus-device.c: Support the new generic bus signal interface. 1.1 root 3221: (tme_bus_device_connection_score): 3222: (tme_bus_device_connection_make): 1.1.1.2 root 3223: (tme_bus_device_connection_break): These are now public. 1.1 root 3224: 1.1.1.2 root 3225: * generic/bus-el.c: Added support for the new generic bus signal 3226: interface. 3227: (_tme_bus_line_raise): Removed. 1.1 root 3228: (_tme_bus_signal): 1.1.1.2 root 3229: (_tme_bus_intack): Added. 1.1 root 3230: 1.1.1.2 root 3231: * generic/serial.c: Removed all uses of TME_ATOMIC. 3232: (tme_serial_buffer_copyout): Fixed a bug where we would overwrite 3233: data_flags with -1 early, resulting in our returning no data. 1.1 root 3234: 1.1.1.2 root 3235: * host/posix/posix-serial.c: Too much work to go into detail. 3236: Everything is at least sketched out. 1.1 root 3237: 3238: * ic/am9513.c (_tme_am9513_callout): 1.1.1.2 root 3239: (_tme_am9513_th_timer): Added. 3240: (_tme_am9513_bus_cycle): Now properly handle the Clear Toggle Output 3241: command, and log it correctly. Lock the new mutex on entry, call 3242: _tme_am9513_callout if needed before exit, and unlock the mutex on 3243: exit. 3244: (tme_ic_am9513_new): Start the new timer thread. 1.1 root 3245: 3246: * ic/z8530.c: Too many changes to go into detail. Highlights include 1.1.1.2 root 3247: a real bus cycle handler, real channels, real serial connections, real 3248: threads. Everything seems to be at least sketched out. 3249: 3250: * ic/z8530reg.h: Added. 3251: 3252: * ic/m68k/m68k-execute.c: Fixed a bug where we were using the return 3253: value of tme_mutex_trylock as a truth value. 3254: 3255: * ic/m68k/m68k-misc.c: Changed to support the new generic bus signal 3256: interface and the new m68k bus interrupt interface. 3257: 3258: * libtme/threads-sjlj.c (tme_sjlj_threads_run): Fixed a bug where we 3259: wouldn't lock the mutex before returning from a condition wait. Fixed 3260: a bug where we would block in select(2) instead of calling it with a 3261: zero timeout. 3262: (tme_sjlj_cond_wait_yield): Remember the mutex the thread had locked 3263: so it can be relocked when the thread resumes. 3264: (tme_sjlj_select_yield): Fixed bugs where we would treat the nfds 3265: argument as the maximum fd, instead of the maximum fd plus one. Fixed 3266: a bug where we couldn't handle NULL descriptor sets. 1.1 root 3267: (tme_sjlj_read_yield): 3268: (tme_sjlj_write_yield): 3269: (tme_sjlj_read_yield): 3270: (tme_sjlj_rwlock_init): 3271: (tme_sjlj_rwlock_lock): 1.1.1.2 root 3272: (tme_sjlj_rwlock_unlock): Added. 1.1 root 3273: 1.1.1.2 root 3274: * machine/sun2/sun2-impl.h: Now track the interrupts asserted in the 3275: system, and the last ipl asserted to the CPU. 1.1 root 3276: 3277: * machine/sun2/sun2-mainbus.c (_tme_sun2_line_reset): 3278: (_tme_sun2_line_halt): 1.1.1.2 root 3279: (_tme_sun2_line_interrupt): Removed. 1.1 root 3280: (_tme_sun2_bus_signal): 1.1.1.2 root 3281: (_tme_sun2_bus_intack): Added. 3282: (_tme_sun2_power): Use the generic bus signal interface to reset 3283: everything. 3284: (tme_machine_sun2_clock_new): Store how the Am9513 output pins are 3285: connected to bus interrupt lines. 3286: 3287: * machine/sun2/sun2-mmu.c (_tme_sun2_multibus_fault_handler): Added a 3288: hack to avoid an mbmem bus error when accessed through virtual 3289: 0xffffffff, which apparently happens in the PROM NMI routine when it 3290: polls the keyboard, even if it didn't probe a keyboard. 3291: 3292: * tme/element.h: Fixed various const to _tme_const. 3293: 3294: * tme/threads.h: Redid the setjmp/longjmp rwlock operations. Added 3295: various new function prototypes and macros. 3296: 3297: * tme/generic/bus-device.h: Support the new generic bus signal 3298: interface. The tme_bus_device_connection_score, 3299: tme_bus_device_connection_make, and tme_bus_device_connection_break 3300: functions are now public. Fixed a const to _tme_const. 3301: 3302: * tme/generic/bus.h: Added the new generic bus signal and interrupt 3303: acknowledge interfaces. Fixed various const to _tme_const. 3304: 3305: * tme/generic/serial.h: Now define TME_SERIAL_CTRL_OK_READ. Removed 3306: the write method from a serial connection. All data transfer happens 3307: with reads, with control signals to indicate when reads are OK. 3308: Removed the TME_ATOMIC use in struct tme_serial_buffer. 1.1 root 3309: (tme_serial_buffer_is_empty): 1.1.1.2 root 3310: (tme_serial_buffer_is_full): Added. 3311: 3312: * tme/ic/am9513.h: struct tme_am9513_socket now holds the basic clock 3313: provided to the chip, and a mapping of its output pins to bus signals. 3314: Fixed a const to _tme_const. 3315: 3316: * tme/ic/m68k.h: Now define some m68k IPL constant macros. Add the 3317: new m68k bus interrupt method. Fixed various const to _tme_const. 3318: 3319: * tme/ic/z8530.h: Made the channel letters lowercase in structure 3320: member names. Fixed a const to _tme_const. 3321: 3322: Sat Apr 26 21:46:16 2003 Matthew Fredette <[email protected]> 3323: 3324: * Makefile.am TODO configure.in generic/Makefile.am 3325: generic/bus-device.c generic/bus-el.c generic/bus.c generic/serial.c 3326: host/posix/posix-memory.c host/posix/posix-serial.c ic/am9513.c 3327: ic/z8530.c ic/i386/i386-decode.c ic/i386/i386-misc-auto-make.sh 3328: ic/i386/i386-opmaps-make.sh ic/i386/i386-save.c 3329: ic/i386/i386-uinsns-auto-make.sh ic/i386/i386-uinsns.c 3330: ic/i386/i386.h tme/generic/Makefile.am tme/generic/bus-device.h 3331: tme/generic/bus.h tme/generic/ic.h tme/generic/serial.h 3332: tme/ic/am9513.h tme/ic/z8530.h: 3333: 3334: Added. 3335: 3336: * bus/Makefile.am host/posix/Makefile.am ic/m68k/Makefile.am 3337: machine/Makefile.am machine/sun/Makefile.am machine/sun2/Makefile.am 3338: machine/sun2/sun2-test.c: 1.1 root 3339: 1.1.1.2 root 3340: Updated. 1.1 root 3341: 1.1.1.2 root 3342: * bus/bus-device.c bus/bus.c tme/bus-device.h tme/bus.h tme/ic.h: 3343: 3344: Removed. 3345: 3346: * host/posix/memory.c: Renamed to posix-memory.c. 3347: 3348: * ic/m68k/m68k-execute.c: Under _TME_M68K_EXECUTE_FAST, at the 3349: beginning of each instruction we do have to check if our ITLB has been 3350: invalidated, as it might have been by some random (control) memory 3351: cycle we just did. 3352: Fixed bugs in the predecrement and postincrement EA handlers. 3353: 3354: * ic/m68k/m68k-impl.h: 3355: * machine/sun2/sun2-impl.h: Now include <tme/generic/ic.h>. 3356: 3357: * ic/m68k/m68k-impl.h: Added support for logging. 3358: 3359: * ic/m68k/m68k-insns-auto.sh: Fixed a serious movem bug where we would 3360: start at bit 1 in the mask, and not bit 0. 3361: In all memory transfer functions, log the transfer. Made the bus 3362: cycle functions "work correctly". Fixed bugs in the generated divide 3363: instructions. 3364: 3365: * ic/m68k/m68k-insns.c (tme_m68k_swap): Fixed a bug where this 3366: wouldn't work on big-endian systems. 1.1 root 3367: (tme_m68k_link): 1.1.1.2 root 3368: (tme_m68k_unlk): Fixed serious bugs where we simply didn't do what 3369: these instructions are supposed to do. 1.1 root 3370: 1.1.1.2 root 3371: * ic/m68k/m68k-iset.txt: On the 68010 and up, the move_from_sr and 3372: move_from_ccr instructions don't read memory before writing it. Fixed 3373: bugs in the encoding of the register bit-shifting with a register 3374: count instructions. 3375: 3376: * ic/m68k/m68k-misc.c (tme_m68k_idle): Use the renamed 3377: tme_cond_wait_yield function. 3378: (tme_m68k_new): Store the element in the IC. 3379: (tme_m68k_go_slow): Use the TME_M68K_TLB_OK_FAST_READ to check for a 3380: bad TLB entry. 3381: (tme_m68k_exception_process): Don't insist on there being exceptions 3382: to process. CPU-specific exception processors may handle them all, 3383: yet still use this function to redispatch. 3384: (_tme_m68k_execute_hook): Added. 1.1 root 3385: 3386: * libtme/threads-sjlj.c (_tme_sjlj_then): 3387: (_tme_sjlj_timeout): 3388: (tme_sjlj_sleep_yield): 1.1.1.2 root 3389: (tme_sjlj_select_yield): Added. 3390: (tme_sjlj_threads_run): Cleaned up the threads dispatcher to support 3391: threads waiting on classic select(2) fd sets, 3392: (tme_sjlj_cond_wait_yield): Renamed from tme_sjlj_cond_wait. 3393: (tme_sjlj_sleep): This function no longer yields. 3394: 3395: * machine/sun/sun-mmu.c: Added some logging. 3396: Disabled the explicit SEGINV support, for now. It appears that the 3397: hardware MMU doesn't have a notion of an invalid PMEG. Now call the 3398: post-MMU TLB fillers with the PTE struct and the virtual address. 3399: 3400: * machine/sun2/sun2-control.c (_tme_sun2_control_cycle_handler): Don't 3401: bother to fill the segmap register unless this is a read. 1.1 root 3402: 1.1.1.2 root 3403: * machine/sun2/sun2-impl.h: Now include <tme/generic/bus.h>. Added 3404: some support for logging. 3405: 3406: * machine/sun2/sun2-mainbus.c: Added some support for logging. 1.1 root 3407: (tme_machine_sun2_clock_new): 1.1.1.2 root 3408: (tme_machine_sun2_zs_new): Added. 1.1 root 3409: 3410: * machine/sun2/sun2-mmu.c: Too much to go into detail. Highlights: 1.1.1.2 root 3411: Added some logging support. 3412: Made the bus error behavior more correct. On the sun2, obio and obmem 3413: don't generate bus errors. Now the post-MMU TLB filler takes the 3414: original PTE entry and the original virtual address. 3415: 3416: * tme/connection.h: Now define TME_CONNECTION_SERIAL. 3417: 3418: * tme/element.h: Added logging support. 3419: 1.1 root 3420: * tme/ic.h: Now include <tme/generic/bus.h> 1.1.1.2 root 3421: 3422: * tme/threads.h: Defined more of the tme threads API. 3423: 3424: * tme/ic/m68k.h: Now include <tme/generic/bus.h>. 3425: 3426: * tme/machine/sun.h: Added support for logging. 3427: Changed the interface to pass the whole PTE struct to the post-MMU TLB 3428: fillers. 1.1 root 3429: 3430: Sat Apr 26 14:44:07 2003 Matthew Fredette <[email protected]> 3431: 1.1.1.2 root 3432: * bus/bus.c (tme_bus_cycle_xfer): Fixed a bug where we used 3433: cycle_writer to get the reader's port size. When indexing bus router 3434: arrays, we have to subtract out the participant's least port lane, 3435: since the arrays don't include information for lanes not connected to 3436: the participant. 3437: 3438: Wed Apr 23 19:31:01 2003 Matthew Fredette <[email protected]> 3439: 3440: * bus/Makefile.am bus/bus-device.c bus/bus.c host/Makefile.am 3441: host/posix/Makefile.am host/posix/memory.c ic/Makefile.am 3442: ic/m68k/m68k-impl.h libtme/Makefile.am libtme/threads-sjlj.c 3443: machine/sun/Makefile.am machine/sun/sun-mmu.c 3444: machine/sun2/Makefile.am machine/sun2/sun2-control.c 3445: machine/sun2/sun2-impl.h machine/sun2/sun2-mainbus.c 3446: machine/sun2/sun2-mmu.c machine/sun2/sun2-test.c tme/Makefile.am 3447: tme/atomics.h tme/bus-device.h tme/bus.h tme/common.h 3448: tme/connection.h tme/element.h tme/ic.h tme/threads.h 3449: tme/ic/Makefile.am tme/ic/m68k.h tme/machine/Makefile.am 3450: tme/machine/sun.h: 3451: 3452: Added. 3453: 1.1 root 3454: * ic/m68k/m68010.c (_tme_m68010_exception): 1.1.1.2 root 3455: (_tme_m68010_rte): Added. 1.1 root 3456: 1.1.1.2 root 3457: * ic/m68k/m68k-bus-auto.sh: Now generates the combined input/output 3458: bus routers. 3459: 3460: * ic/m68k/m68k-execute.c: 3461: * ic/m68k/m68k-insns.c: 3462: * ic/m68k/m68k-misc.c: Although I hate doing this, "too many changes 3463: to list." 3464: 3465: * ic/m68k/m68k-insns-auto.sh: Some minor copyright and cosmetic fixes. 3466: Updated the bus cycle functions to support the latest generic bus 3467: cycle idea. 3468: 3469: * ic/m68k/m68k-iset-expand.pl: When the EA is an immediate, just emit 3470: the immediate information and skip the EA information - we don't want 3471: to use the EA path in this case. 3472: 3473: * ic/m68k/m68k-iset.txt: moveq is now its own insn. 3474: 3475: * ic/m68k/m68k-misc-auto.sh: Copyright sweep. 3476: 3477: * ic/m68k/m68k-opmap-make.pl: Fixed some random bugs, and correctly 3478: handle the case where EA and immediate operand must be undefined for a 3479: pattern, to avoid using the EA and immediate operand in any root 3480: entry. 3481: 3482: * ic/m68k/m68k.h: Removed. 1.1 root 3483: 3484: Sun Apr 20 21:33:05 2003 Matthew Fredette <[email protected]> 3485: 1.1.1.2 root 3486: * ic/m68k/m68k-bus-auto.sh: Added. 1.1 root 3487: 3488: Fri Apr 18 04:56:36 2003 Matthew Fredette <[email protected]> 3489: 1.1.1.2 root 3490: * ic/m68k/m68k-insns-auto.sh: Added support for generating the moveq32 3491: insn. Cleaned up and fixed some bugs in the bus cycle functions. 1.1 root 3492: 1.1.1.2 root 3493: * ic/m68k/m68k-misc-auto.sh: Cleaned up the set of registers that we 3494: define. Added better locking support to the instruction fetch macros. 1.1 root 3495: 3496: Tue Apr 15 13:32:37 2003 Matthew Fredette <[email protected]> 3497: 1.1.1.2 root 3498: * ic/m68k/m68k-insns-auto.sh: Unfortunately, too much work to list in 3499: detail. Improved the arithmetic function flag-setting code to compile 3500: well on i386 with gcc -O2. Added many special-purpose memory read and 3501: write functions, and finally introduced the general bus-cycle read and 3502: write functions. Added many new instructions, including multiply and 3503: divide. 1.1 root 3504: 3505: Sat Apr 05 18:47:38 2003 Matthew Fredette <[email protected]> 3506: 1.1.1.2 root 3507: * machine/Makefile.am: Added. 1.1 root 3508: 1.1.1.2 root 3509: Tue Apr 01 20:13:40 2003 Matthew Fredette <[email protected]> 1.1 root 3510: 1.1.1.2 root 3511: * ic/m68k/Makefile.am: Build decoders for the 68000, 68010, and 68020. 3512: * ic/m68k/m68k-iset-expand.pl: Added a very basic preprocessor to 3513: support generating different instruction sets for different CPUs. Now 3514: whenever an instruction wants the EA, its operand is eax.32 even if 3515: the known EA is address register indirect. 1.1 root 3516: 1.1.1.2 root 3517: * ic/m68k/m68k-iset.txt: This should be the complete integer 3518: instruction set for the 68000, 68010, 68020, and 68030. 1.1 root 3519: 1.1.1.2 root 3520: * ic/m68k/m68k-opmap-make.pl: Added comments, and reworked to support 3521: compiling instruction sets for different CPUs together, reusing 3522: submaps and opcode maps whenever possible. 1.1 root 3523: 1.1.1.2 root 3524: * ic/m68k/m68k.h: Before the -impl.h split. 1.1 root 3525: 3526: Sun Mar 30 22:04:15 2003 Matthew Fredette <[email protected]> 3527: 1.1.1.2 root 3528: * ic/m68k/Makefile.am ic/m68k/m68010.c ic/m68k/m68k-execute.c 3529: ic/m68k/m68k-insns-auto.sh ic/m68k/m68k-insns.c 3530: ic/m68k/m68k-iset-expand.pl ic/m68k/m68k-iset.txt 3531: ic/m68k/m68k-misc-auto.sh ic/m68k/m68k-misc.c 3532: ic/m68k/m68k-opmap-make.pl ic/m68k/m68k.h: 1.1 root 3533: 1.1.1.2 root 3534: Added.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.