From 79f0600b9aa14e5a52e6c8428b0ce0c3e24cd480 Mon Sep 17 00:00:00 2001 From: Nikunj A Dadhania Date: Thu, 21 Nov 2013 11:14:54 +0530 Subject: Output banner and initial display output in VNC window Initial display output does not show up in the VGA/VNC window. Create replay buffer to store the initial output and when vga/vnc console starts, dump the buffer there. Signed-off-by: Nikunj A Dadhania --- lib/libhvcall/hvcall.S | 12 ++++++++++-- lib/libhvcall/hvcall.code | 5 +++++ lib/libhvcall/hvcall.in | 1 + lib/libhvcall/libhvcall.h | 1 + 4 files changed, 17 insertions(+), 2 deletions(-) (limited to 'lib/libhvcall') diff --git a/lib/libhvcall/hvcall.S b/lib/libhvcall/hvcall.S index 2444953..92cf22e 100644 --- a/lib/libhvcall/hvcall.S +++ b/lib/libhvcall/hvcall.S @@ -2,12 +2,20 @@ #define __ASSEMBLY__ #include "macros.h" #include "libhvcall.h" - +#include +#include + #define HVCALL .long 0x44000022 - .text .align 3 +ENTRY(get_print_banner) + LOAD32(r4, print_version) + LOAD32(r5, print_version_end) + std r4,0(r3) + std r5,8(r3) + blr + ENTRY(hv_generic) HVCALL blr diff --git a/lib/libhvcall/hvcall.code b/lib/libhvcall/hvcall.code index 9bd47c6..6d70b3c 100644 --- a/lib/libhvcall/hvcall.code +++ b/lib/libhvcall/hvcall.code @@ -110,3 +110,8 @@ PRIM(hv_X2d_cas) unsigned long vec = TOS.u; TOS.u = hv_cas(vec, buf, size); MIRP + +PRIM(get_X2d_print_X2d_version) + unsigned long addr = TOS.u; POP; + get_print_banner(addr); +MIRP diff --git a/lib/libhvcall/hvcall.in b/lib/libhvcall/hvcall.in index 9c8d6aa..1f9ed6b 100644 --- a/lib/libhvcall/hvcall.in +++ b/lib/libhvcall/hvcall.in @@ -29,3 +29,4 @@ cod(RX!) cod(hv-logical-memop) cod(hv-cas) +cod(get-print-version) diff --git a/lib/libhvcall/libhvcall.h b/lib/libhvcall/libhvcall.h index de54313..03813cd 100644 --- a/lib/libhvcall/libhvcall.h +++ b/lib/libhvcall/libhvcall.h @@ -32,6 +32,7 @@ extern long hv_generic(unsigned long opcode, ...); extern void hv_putchar(char c, int hvtermno); extern char hv_getchar(int hvtermno); extern char hv_haschar(int hvtermno); +extern void get_print_banner(unsigned long addr); extern int hv_send_crq(unsigned int unit, uint64_t *msgaddr); -- cgit v1.1