Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch/amd64/stand/prekern prekern: add support for warnin...



details:   https://anonhg.NetBSD.org/src/rev/f3abc48f6886
branches:  trunk
changeset: 379021:f3abc48f6886
user:      khorben <khorben%NetBSD.org@localhost>
date:      Tue May 04 21:09:16 2021 +0000

description:
prekern: add support for warning messages

As submitted on port-amd64@ (part 1/3)

Tested on NetBSD/amd64.

diffstat:

 sys/arch/amd64/stand/prekern/console.c |  23 +++++++++++++++++------
 sys/arch/amd64/stand/prekern/elf.c     |  12 ++++++------
 sys/arch/amd64/stand/prekern/mm.c      |  10 +++++-----
 sys/arch/amd64/stand/prekern/prekern.c |   6 +++---
 sys/arch/amd64/stand/prekern/prekern.h |  12 ++++++++++--
 5 files changed, 41 insertions(+), 22 deletions(-)

diffs (191 lines):

diff -r f8da8948e137 -r f3abc48f6886 sys/arch/amd64/stand/prekern/console.c
--- a/sys/arch/amd64/stand/prekern/console.c    Tue May 04 19:57:56 2021 +0000
+++ b/sys/arch/amd64/stand/prekern/console.c    Tue May 04 21:09:16 2021 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: console.c,v 1.6 2020/05/23 08:25:32 maxv Exp $ */
+/*     $NetBSD: console.c,v 1.7 2021/05/04 21:09:16 khorben Exp $      */
 
 /*
  * Copyright (c) 2017-2020 The NetBSD Foundation, Inc. All rights reserved.
@@ -100,13 +100,24 @@ void print(char *buf)
        print_ext(WHITE_ON_BLACK, buf);
 }
 
-void print_state(bool ok, char *buf)
+void print_state(state_t state, char *buf)
 {
        print("[");
-       if (ok)
-               print_ext(GREEN_ON_BLACK, "+");
-       else
-               print_ext(RED_ON_BLACK, "!");
+       switch (state)
+       {
+               case STATE_NORMAL:
+                       print_ext(GREEN_ON_BLACK, "+");
+                       break;
+               case STATE_ERROR:
+                       print_ext(RED_ON_BLACK, "!");
+                       break;
+               case STATE_WARNING:
+                       print_ext(YELLOW_ON_BLACK, "*");
+                       break;
+               default:
+                       print_ext(WHITE_ON_BLACK, "?");
+                       break;
+       }
        print("] ");
        print(buf);
        print("\n");
diff -r f8da8948e137 -r f3abc48f6886 sys/arch/amd64/stand/prekern/elf.c
--- a/sys/arch/amd64/stand/prekern/elf.c        Tue May 04 19:57:56 2021 +0000
+++ b/sys/arch/amd64/stand/prekern/elf.c        Tue May 04 21:09:16 2021 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: elf.c,v 1.21 2020/05/07 17:58:26 maxv Exp $    */
+/*     $NetBSD: elf.c,v 1.22 2021/05/04 21:09:16 khorben Exp $ */
 
 /*
  * Copyright (c) 2017-2020 The NetBSD Foundation, Inc. All rights reserved.
@@ -426,7 +426,7 @@ elf_kernel_reloc(void)
        Elf_Sym *sym;
        size_t i, j;
 
-       print_state(true, "ELF info created");
+       print_state(STATE_NORMAL, "ELF info created");
 
        /*
         * Update all symbol values with the appropriate offset.
@@ -447,7 +447,7 @@ elf_kernel_reloc(void)
                }
        }
 
-       print_state(true, "Symbol values updated");
+       print_state(STATE_NORMAL, "Symbol values updated");
 
        /*
         * Perform relocations without addend if there are any.
@@ -482,7 +482,7 @@ elf_kernel_reloc(void)
                }
        }
 
-       print_state(true, "REL relocations applied");
+       print_state(STATE_NORMAL, "REL relocations applied");
 
        /*
         * Perform relocations with addend if there are any.
@@ -517,7 +517,7 @@ elf_kernel_reloc(void)
                }
        }
 
-       print_state(true, "RELA relocations applied");
+       print_state(STATE_NORMAL, "RELA relocations applied");
 
        /*
         * Get the entry point.
@@ -527,7 +527,7 @@ elf_kernel_reloc(void)
                fatal("elf_kernel_reloc: entry point not found");
        }
 
-       print_state(true, "Entry point found");
+       print_state(STATE_NORMAL, "Entry point found");
 
        return ent;
 }
diff -r f8da8948e137 -r f3abc48f6886 sys/arch/amd64/stand/prekern/mm.c
--- a/sys/arch/amd64/stand/prekern/mm.c Tue May 04 19:57:56 2021 +0000
+++ b/sys/arch/amd64/stand/prekern/mm.c Tue May 04 21:09:16 2021 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: mm.c,v 1.27 2020/05/07 17:58:26 maxv Exp $     */
+/*     $NetBSD: mm.c,v 1.28 2021/05/04 21:09:16 khorben Exp $  */
 
 /*
  * Copyright (c) 2017-2020 The NetBSD Foundation, Inc. All rights reserved.
@@ -148,7 +148,7 @@ mm_bootspace_mprotect(void)
                mm_mprotect(bootspace.segs[i].va, bootspace.segs[i].sz, prot);
        }
 
-       print_state(true, "Segments protection updated");
+       print_state(STATE_NORMAL, "Segments protection updated");
 }
 
 static size_t
@@ -493,9 +493,9 @@ mm_map_kernel(void)
 {
        memset(&bootspace, 0, sizeof(bootspace));
        mm_map_head();
-       print_state(true, "Head region mapped");
+       print_state(STATE_NORMAL, "Head region mapped");
        elf_map_sections();
-       print_state(true, "Segments mapped");
+       print_state(STATE_NORMAL, "Segments mapped");
        mm_map_boot();
-       print_state(true, "Boot region mapped");
+       print_state(STATE_NORMAL, "Boot region mapped");
 }
diff -r f8da8948e137 -r f3abc48f6886 sys/arch/amd64/stand/prekern/prekern.c
--- a/sys/arch/amd64/stand/prekern/prekern.c    Tue May 04 19:57:56 2021 +0000
+++ b/sys/arch/amd64/stand/prekern/prekern.c    Tue May 04 21:09:16 2021 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: prekern.c,v 1.13 2020/05/23 08:25:32 maxv Exp $        */
+/*     $NetBSD: prekern.c,v 1.14 2021/05/04 21:09:16 khorben Exp $     */
 
 /*
  * Copyright (c) 2017-2020 The NetBSD Foundation, Inc. All rights reserved.
@@ -286,7 +286,7 @@ init_prekern(paddr_t pa_start)
         */
        init_idt();
 
-       print_state(true, "Prekern loaded");
+       print_state(STATE_NORMAL, "Prekern loaded");
 
        /*
         * Init the PRNG.
@@ -309,7 +309,7 @@ init_prekern(paddr_t pa_start)
        /*
         * Finally, jump into the kernel.
         */
-       print_state(true, "Jumping into the kernel");
+       print_state(STATE_NORMAL, "Jumping into the kernel");
        jump_kernel(ent);
 
        fatal("init_prekern: unreachable!");
diff -r f8da8948e137 -r f3abc48f6886 sys/arch/amd64/stand/prekern/prekern.h
--- a/sys/arch/amd64/stand/prekern/prekern.h    Tue May 04 19:57:56 2021 +0000
+++ b/sys/arch/amd64/stand/prekern/prekern.h    Tue May 04 21:09:16 2021 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: prekern.h,v 1.23 2020/05/23 08:25:32 maxv Exp $        */
+/*     $NetBSD: prekern.h,v 1.24 2021/05/04 21:09:16 khorben Exp $     */
 
 /*
  * Copyright (c) 2017-2020 The NetBSD Foundation, Inc. All rights reserved.
@@ -42,6 +42,7 @@ typedef uint64_t pte_prot_t;
 #define WHITE_ON_BLACK 0x07
 #define RED_ON_BLACK 0x04
 #define GREEN_ON_BLACK 0x02
+#define YELLOW_ON_BLACK 0x0e
 
 #define HEAD_WINDOW_BASE       (KERNBASE - NBPD_L3)
 #define HEAD_WINDOW_SIZE       NBPD_L3
@@ -49,6 +50,13 @@ typedef uint64_t pte_prot_t;
 #define KASLR_WINDOW_BASE      KERNBASE                /* max - 2GB */
 #define KASLR_WINDOW_SIZE      (2LLU * (1 << 30))      /* 2GB */
 
+typedef enum
+{
+       STATE_NORMAL = 0,
+       STATE_ERROR,
+       STATE_WARNING
+} state_t;
+
 /* -------------------------------------------------------------------------- */
 
 #define BTSEG_NONE     0
@@ -83,7 +91,7 @@ struct bootspace {
 void init_cons(void);
 void print_ext(int, char *);
 void print(char *);
-void print_state(bool, char *);
+void print_state(state_t, char *);
 void print_banner(void);
 
 /* elf.c */



Home | Main Index | Thread Index | Old Index