diff options
Diffstat (limited to 'qemu/roms/SLOF/lib/libbootmsg/bootmsg_lvl.S')
-rw-r--r-- | qemu/roms/SLOF/lib/libbootmsg/bootmsg_lvl.S | 204 |
1 files changed, 0 insertions, 204 deletions
diff --git a/qemu/roms/SLOF/lib/libbootmsg/bootmsg_lvl.S b/qemu/roms/SLOF/lib/libbootmsg/bootmsg_lvl.S deleted file mode 100644 index 2e4c1359a..000000000 --- a/qemu/roms/SLOF/lib/libbootmsg/bootmsg_lvl.S +++ /dev/null @@ -1,204 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2004, 2008 IBM Corporation - * All rights reserved. - * This program and the accompanying materials - * are made available under the terms of the BSD License - * which accompanies this distribution, and is available at - * http://www.opensource.org/licenses/bsd-license.php - * - * Contributors: - * IBM Corporation - initial implementation - *****************************************************************************/ -#define _ASM_ -#include "macros.h" -#include "southbridge.h" -#include "nvramlog.h" - -#define bootmsg_area_size 128 - - .text - .align 3 - -// Declare the warning level for all 128 possibilities of AC/pCKG kombinations - WRNG_LVL: - .rept bootmsg_area_size - .byte 0x0 - .endr - - -//***************************************************************************** -// Check UserWarningLevel against SystemWarningLevel -// input : r3=cp-id, r5=level -// change: r6,r7 -// output: CR0 ( compared user vs system level ) -// example: -// bl GET_WRNG_LVL -// ble print_warning -// bgt do_not_print_warning -ENTRY(GET_WRNG_LVL) - mflr r7 // save linkage register - bl 0f // get current -0: mflr r6 // Instruction Address - mtlr r7 // restore linkage register - addi r6,r6,WRNG_LVL-0b // calc addr of WRNG_LVL array - rldic r7,r3,56,57 // calc index into array - lbzux r7,r6,r7 // read the warning level - cmpw r5,r7 // and compare it - blr - -//***************************************************************************** -// Print CheckPoint -// input : r3=cp-id -// change: r3, r4, r5, r6, r7, r11 -// output: none -ENTRY(bootmsg_cp) - mflr r11 - mr r9, r3 // save checkpoint ID - li r3, 'C' - bl io_putchar // print character - mr r3, r9 - bl io_printhex16 // print checkpoint ID - .rept 5 - li r3,'\b' - bl io_putchar // print backspaces - .endr - mtlr r11 - blr - -//***************************************************************************** -// Print a general BootMessage -// input : r3=cp-id, r4=string, r5=char (type C,W,E) -// change: r3,r4,r5,r6,r7,r9,r10,r11,r12 -// output: none -ENTRY(print_msg) - mflr r11 // Save linkage register - mr r9, r3 // Save ID - mr r10, r4 // Save ptr to string - mr r12, r5 // Save type (char [CWE]) - li r3, '\n' // make it a new line - bl io_putchar - li r3, '\r' - bl io_putchar - mr r3, r12 // restore type - bl io_putchar // print character - mr r3, r9 // restore ID - bl io_printhex16 // print checkpoint ID - li r3, ' ' // print a space - bl io_putchar - mr r3, r10 // restore ptr to string - bl io_print // print message - li r3, '\n' // add a new line - bl io_putchar - li r3, '\r' - bl io_putchar - mtlr r11 // restore linkage register - blr - -//***************************************************************************** -// Print an Error Boot Message -// input : r3=cp-id, r4=string-ptr -// change : r3,r4,r5,r6,r7,r9,r10,r11,r12 -// output : none -ENTRY(bootmsg_error) - li r5, 'E' // E is for Error - b print_msg // and print this message - -//***************************************************************************** -// Print a Warning Boot Message -// input : r3=cp-id, r4=string-ptr, r5=level -// change : r3,r4,r5,r6,r7,r9,r10,r11,r12 -// output : none -ENTRY(bootmsg_warning) - mflr r11 // save linkage register - bl GET_WRNG_LVL // check UserLevel against SystemLevel - mtlr r11 // restore linkage register - li r5, 'W' // 'W' is for Warning - ble print_msg // if UserLevel<=SystemLevel print and return - blr // else return - -//***************************************************************************** -// Print a Debug Checkpoint -// input : r3=cp-id, r4=string-ptr, r5=level -// change : r3,r4,r5,r6,r7,r9,r10,r11,r12 -// output : none -// r3=cp-id, r4=string, r5=level -ENTRY(bootmsg_debugcp) - mflr r11 // save linkage register - addi r5,r5,0x20 // add checkpoint offset - bl GET_WRNG_LVL // check UserLevel against SystemLevel - mtlr r11 // restore linkage register - li r5, 'D' // 'D' is for Debug CheckPoint - ble print_msg // if UserLevel<=SystemLevel print and return - blr // else return - -//***************************************************************************** -// Check warning level -// input : r3=cp-id, r4=level -// change : r3,r4,r5,r6,r7,r9,r10,r11 -// output : r3 (true, false) -// r3=cp-id, r4=level -ENTRY(bootmsg_checklevel) - mflr r11 - mr r5, r4 - slwi r3, r3, 8 - bl GET_WRNG_LVL // check UserLevel against SystemLevel - li r3, 0 // return 0 - bgt 0f // IF ( UserLevel < SystemLevel ) - li r3, 1 // | return 1 -0: mtlr r11 // FI - blr - -// r3=area|pkg, r4=level -ENTRY(bootmsg_setlevel) - mflr r5 - bl WarningMsg // calc current IA - WarningMsg: - mflr r6 // get current IA - addi r6,r6,WRNG_LVL-WarningMsg - andi. r3, r3, 0x7F - add r6,r3,r6 // address | - stb r4,0(r6) // store level |_ stwbrx r4,r3,r6 - -#if !defined(DISABLE_NVRAM) && !defined(RTAS_NVRAM) - LOAD64(r6, SB_NVRAM_FWONLY_adr + 8 ) - add r6,r6,r3 - stb r4,0(r6) -#endif - mtlr r5 - blr - -ENTRY(bootmsg_nvupdate) -#if !defined(DISABLE_NVRAM) && !defined(RTAS_NVRAM) - mflr r10 - LOAD64(r3, SB_NVRAM_FWONLY_adr) - lwz r4, 0(r3) - cmpwi r4, 0x424E // find bootmsg area header - bne 0f - - LOAD64(r5, bootmsg_area_size/8) - mtctr r5 - bl WngMsg - WngMsg: - mflr r5 - addi r5,r5,WRNG_LVL-WngMsg-8 - -1: - ldu r4, 8(r3) - stdu r4, 8(r5) - bdnz+ 1b - b 2f - -0: - LOAD64(r5, bootmsg_area_size) - mtctr r5 - li r4, 0x424E // clear bootmsg log area - stw r4, 0(r3) - li r4, 0 - -1: stdu r4, 8(r3) - bdnz+ 1b - -2: // the end - mtlr r10 -#endif - blr |