On 19.12.19 01:28, Richard Henderson wrote: > On 11/3/19 10:56 AM, Sven Schnelle wrote: >> This adds emulation of Artist graphics good enough >> to get a Text console on both Linux and HP-UX. The >> X11 server from HP-UX also works. >> >> Signed-off-by: Sven Schnelle <sv...@stackframe.org> >> --- >> hw/display/Kconfig | 4 + >> hw/display/Makefile.objs | 1 + >> hw/display/artist.c | 1449 ++++++++++++++++++++++++++++++++++++++ >> hw/display/trace-events | 9 + >> hw/hppa/Kconfig | 1 + >> hw/hppa/hppa_hardware.h | 1 + >> hw/hppa/machine.c | 9 + >> 7 files changed, 1474 insertions(+) >> create mode 100644 hw/display/artist.c > > Seems to have some problems rebased upon master: > > >> Thread 6 "qemu-system-hpp" received signal SIGSEGV, Segmentation fault. >> [Switching to Thread 0x7fffee3b6700 (LWP 11752)] >> 0x00005555558bba54 in artist_rop8 (s=s@entry=0x555556105400, >> dst=dst@entry=0x7fffed740000 "", val=0 '\000') >> at /home/rth/qemu/qemu/hw/display/artist.c:288 >> 288 *dst |= val & plane_mask; >> (gdb) where >> #0 0x00005555558bba54 in artist_rop8 >> (s=s@entry=0x555556105400, dst=dst@entry=0x7fffed740000 "", val=0 '\000') >> at /home/rth/qemu/qemu/hw/display/artist.c:288 >> #1 0x00005555558bc145 in vram_bit_write >> (s=s@entry=0x555556105400, posx=<optimized out>, posy=<optimized out>, >> incr_x=incr_x@entry=false, size=size@entry=4, data=<optimized out>, >> data@entry=0) >> at /home/rth/qemu/qemu/hw/display/artist.c:430 >> #2 0x00005555558bd33b in artist_reg_write >> (opaque=0x555556105400, addr=1050144, val=0, size=4) >> at /home/rth/qemu/qemu/hw/display/artist.c:862 >> #3 0x00005555557b271b in memory_region_write_accessor >> (mr=mr@entry=0x5555561058f0, addr=addr@entry=1050144, >> value=value@entry=0x7fffee3b4f08, size=size@entry=4, shift=shift@entry=0, >> mask=mask@entry=4294967295, attrs=...) at /home/rth/qemu/qemu/memory.c:483 >> #4 0x00005555557b03d3 in access_with_adjusted_size >> (addr=addr@entry=1050144, value=value@entry=0x7fffee3b4f08, >> size=size@entry=4, access_size_min=<optimized out>, >> access_size_max=<optimized out>, access_fn=access_fn@entry= >> 0x5555557b25f0 <memory_region_write_accessor>, mr=0x5555561058f0, >> attrs=...) at /home/rth/qemu/qemu/memory.c:539 >> #5 0x00005555557b4b34 in memory_region_dispatch_write >> (mr=mr@entry=0x5555561058f0, addr=addr@entry=1050144, data=<optimized >> out>, data@entry=0, op=op@entry=MO_BEUL, attrs=...) >> at /home/rth/qemu/qemu/memory.c:1475 >> #6 0x00005555557c18ed in io_writex >> (env=env@entry=0x5555563a6b60, mmu_idx=mmu_idx@entry=4, val=val@entry=0, >> addr=addr@entry=4161799712, retaddr=140736415114886, op=MO_BEUL, >> iotlbentry=<optimized out>, iotlbentry=<optimized out>) >> at /home/rth/qemu/qemu/accel/tcg/cputlb.c:977 >> #7 0x00005555557c77bc in store_helper >> (op=MO_BEUL, retaddr=140736415114886, oi=<optimized out>, val=0, >> addr=4161799712, env=0x5555563a6b60) at >> /home/rth/qemu/qemu/accel/tcg/cputlb.c:1716 >> #8 0x00005555557c77bc in helper_be_stl_mmu >> (env=0x5555563a6b60, addr=4161799712, val=0, oi=<optimized out>, >> retaddr=140736415114886) at /home/rth/qemu/qemu/accel/tcg/cputlb.c:1842 >> #9 0x00007fffc007a686 in code_gen_buffer ()
Richard, the attached patch (for seabios-hppa) fixes it for me. Can you test as well? It fixes the sti text column to go out-of-range and thus outside the framebuffer memory. Helge
diff --git a/src/parisc/sti.c b/src/parisc/sti.c index 7935770..eca79da 100644 --- a/src/parisc/sti.c +++ b/src/parisc/sti.c @@ -168,5 +168,8 @@ void sti_putc(const char c) } return; } - sti_putchar(rom, row, col++, c); + + sti_putchar(rom, row, col, c); + if (col < ((sti_glob_cfg.onscreen_x / font->width) - 1)) + col++; }