Home | History | Annotate | Download | only in aarch64
      1 /*
      2  * Copyright (c) 2015-2017, ARM Limited and Contributors. All rights reserved.
      3  *
      4  * SPDX-License-Identifier: BSD-3-Clause
      5  */
      6 #include <asm_macros.S>
      7 
      8 	/*
      9 	 * This file contains a skeleton console implementation that can
     10 	 * be used as basis for a real console implementation by platforms
     11 	 * that do not contain PL011 hardware.
     12 	 */
     13 
     14 	.globl	console_core_init
     15 	.globl	console_core_putc
     16 	.globl	console_core_getc
     17 	.globl	console_core_flush
     18 
     19 	/* -----------------------------------------------
     20 	 * int console_core_init(uintptr_t base_addr,
     21 	 * unsigned int uart_clk, unsigned int baud_rate)
     22 	 * Function to initialize the console without a
     23 	 * C Runtime to print debug information. This
     24 	 * function will be accessed by console_init and
     25 	 * crash reporting.
     26 	 * In: x0 - console base address
     27 	 *     w1 - Uart clock in Hz
     28 	 *     w2 - Baud rate
     29 	 * Out: return 1 on success else 0 on error
     30 	 * Clobber list : x1, x2
     31 	 * -----------------------------------------------
     32 	 */
     33 func console_core_init
     34 	/* Check the input base address */
     35 	cbz	x0, core_init_fail
     36 	/* Check baud rate and uart clock for sanity */
     37 	cbz	w1, core_init_fail
     38 	cbz	w2, core_init_fail
     39 	/* Insert implementation here */
     40 	mov	w0, #1
     41 	ret
     42 core_init_fail:
     43 	mov	w0, wzr
     44 	ret
     45 endfunc console_core_init
     46 
     47 	/* --------------------------------------------------------
     48 	 * int console_core_putc(int c, uintptr_t base_addr)
     49 	 * Function to output a character over the console. It
     50 	 * returns the character printed on success or -1 on error.
     51 	 * In : w0 - character to be printed
     52 	 *      x1 - console base address
     53 	 * Out : return -1 on error else return character.
     54 	 * Clobber list : x2
     55 	 * --------------------------------------------------------
     56 	 */
     57 func console_core_putc
     58 	/* Check the input parameter */
     59 	cbz	x1, putc_error
     60 	/* Insert implementation here */
     61 	ret
     62 putc_error:
     63 	mov	w0, #-1
     64 	ret
     65 endfunc console_core_putc
     66 
     67 	/* ---------------------------------------------
     68 	 * int console_core_getc(uintptr_t base_addr)
     69 	 * Function to get a character from the console.
     70 	 * It returns the character grabbed on success
     71 	 * or -1 on error.
     72 	 * In : x0 - console base address
     73 	 * Clobber list : x0, x1
     74 	 * ---------------------------------------------
     75 	 */
     76 func console_core_getc
     77 	cbz	x0, getc_error
     78 	/* Insert implementation here */
     79 	ret
     80 getc_error:
     81 	mov	w0, #-1
     82 	ret
     83 endfunc console_core_getc
     84 
     85 	/* ---------------------------------------------
     86 	 * int console_core_flush(uintptr_t base_addr)
     87 	 * Function to force a write of all buffered
     88 	 * data that hasn't been output.
     89 	 * In : x0 - console base address
     90 	 * Out : return -1 on error else return 0.
     91 	 * Clobber list : x0, x1
     92 	 * ---------------------------------------------
     93 	 */
     94 func console_core_flush
     95 	cbz	x0, flush_error
     96 	/* Insert implementation here */
     97 	mov	w0, #0
     98 	ret
     99 flush_error:
    100 	mov	w0, #-1
    101 	ret
    102 endfunc console_core_flush
    103