| From 379f231f0afb5e10cd82bc6346e4a6776df3e21e Mon Sep 17 00:00:00 2001 |
| From: Mahesh Bodapati <mbodapat@xilinx.com> |
| Date: Mon, 23 Jan 2017 15:42:11 +0530 |
| Subject: [PATCH 04/11] [Local]: deleting the xil_printf.c file as now it part |
| of BSP |
| |
| --- |
| libgloss/microblaze/xil_printf.c | 284 --------------------------------------- |
| 1 file changed, 284 deletions(-) |
| delete mode 100644 libgloss/microblaze/xil_printf.c |
| |
| diff --git a/libgloss/microblaze/xil_printf.c b/libgloss/microblaze/xil_printf.c |
| deleted file mode 100644 |
| index f18ee84..0000000 |
| --- a/libgloss/microblaze/xil_printf.c |
| +++ /dev/null |
| @@ -1,284 +0,0 @@ |
| -/* Copyright (c) 1995-2013 Xilinx, Inc. All rights reserved. |
| - * |
| - * Redistribution and use in source and binary forms, with or without |
| - * modification, are permitted provided that the following conditions are |
| - * met: |
| - * |
| - * 1. Redistributions source code must retain the above copyright notice, |
| - * this list of conditions and the following disclaimer. |
| - * |
| - * 2. Redistributions in binary form must reproduce the above copyright |
| - * notice, this list of conditions and the following disclaimer in the |
| - * documentation and/or other materials provided with the distribution. |
| - * |
| - * 3. Neither the name of Xilinx nor the names of its contributors may be |
| - * used to endorse or promote products derived from this software without |
| - * specific prior written permission. |
| - * |
| - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS |
| - * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED |
| - * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A |
| - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
| - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED |
| - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
| - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF |
| - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
| - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
| - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| - */ |
| - |
| -#include <ctype.h> |
| -#include <string.h> |
| -#include <stdarg.h> |
| - |
| -extern void outbyte (char); |
| - |
| -/*----------------------------------------------------*/ |
| -/* Use the following parameter passing structure to */ |
| -/* make xil_printf re-entrant. */ |
| -/*----------------------------------------------------*/ |
| -typedef struct params_s { |
| - int len; |
| - int num1; |
| - int num2; |
| - char pad_character; |
| - int do_padding; |
| - int left_flag; |
| -} params_t; |
| - |
| -/*---------------------------------------------------*/ |
| -/* The purpose of this routine is to output data the */ |
| -/* same as the standard printf function without the */ |
| -/* overhead most run-time libraries involve. Usually */ |
| -/* the printf brings in many kilobytes of code and */ |
| -/* that is unacceptable in most embedded systems. */ |
| -/*---------------------------------------------------*/ |
| - |
| -typedef char* charptr; |
| -typedef int (*func_ptr)(int c); |
| - |
| -/*---------------------------------------------------*/ |
| -/* */ |
| -/* This routine puts pad characters into the output */ |
| -/* buffer. */ |
| -/* */ |
| -static void padding( const int l_flag, params_t *par) |
| -{ |
| - int i; |
| - |
| - if (par->do_padding && l_flag && (par->len < par->num1)) |
| - for (i=par->len; i<par->num1; i++) |
| - outbyte( par->pad_character); |
| -} |
| - |
| -/*---------------------------------------------------*/ |
| -/* */ |
| -/* This routine moves a string to the output buffer */ |
| -/* as directed by the padding and positioning flags. */ |
| -/* */ |
| -static void outs( charptr lp, params_t *par) |
| -{ |
| - /* pad on left if needed */ |
| - par->len = strlen( lp); |
| - padding( !(par->left_flag), par); |
| - |
| - /* Move string to the buffer */ |
| - while (*lp && (par->num2)--) |
| - outbyte( *lp++); |
| - |
| - /* Pad on right if needed */ |
| - /* CR 439175 - elided next stmt. Seemed bogus. */ |
| - /* par->len = strlen( lp); */ |
| - padding( par->left_flag, par); |
| -} |
| - |
| -/*---------------------------------------------------*/ |
| -/* */ |
| -/* This routine moves a number to the output buffer */ |
| -/* as directed by the padding and positioning flags. */ |
| -/* */ |
| - |
| -static void outnum( const long n, const long base, params_t *par) |
| -{ |
| - charptr cp; |
| - int negative; |
| - char outbuf[32]; |
| - const char digits[] = "0123456789ABCDEF"; |
| - unsigned long num; |
| - |
| - /* Check if number is negative */ |
| - if (base == 10 && n < 0L) { |
| - negative = 1; |
| - num = -(n); |
| - } |
| - else{ |
| - num = (n); |
| - negative = 0; |
| - } |
| - |
| - /* Build number (backwards) in outbuf */ |
| - cp = outbuf; |
| - do { |
| - *cp++ = digits[(int)(num % base)]; |
| - } while ((num /= base) > 0); |
| - if (negative) |
| - *cp++ = '-'; |
| - *cp-- = 0; |
| - |
| - /* Move the converted number to the buffer and */ |
| - /* add in the padding where needed. */ |
| - par->len = strlen(outbuf); |
| - padding( !(par->left_flag), par); |
| - while (cp >= outbuf) |
| - outbyte( *cp--); |
| - padding( par->left_flag, par); |
| -} |
| - |
| -/*---------------------------------------------------*/ |
| -/* */ |
| -/* This routine gets a number from the format */ |
| -/* string. */ |
| -/* */ |
| -static int getnum( charptr* linep) |
| -{ |
| - int n; |
| - charptr cp; |
| - |
| - n = 0; |
| - cp = *linep; |
| - while (isdigit(*cp)) |
| - n = n*10 + ((*cp++) - '0'); |
| - *linep = cp; |
| - return(n); |
| -} |
| - |
| -/*---------------------------------------------------*/ |
| -/* */ |
| -/* This routine operates just like a printf/sprintf */ |
| -/* routine. It outputs a set of data under the */ |
| -/* control of a formatting string. Not all of the */ |
| -/* standard C format control are supported. The ones */ |
| -/* provided are primarily those needed for embedded */ |
| -/* systems work. Primarily the floaing point */ |
| -/* routines are omitted. Other formats could be */ |
| -/* added easily by following the examples shown for */ |
| -/* the supported formats. */ |
| -/* */ |
| - |
| -/* void esp_printf( const func_ptr f_ptr, |
| - const charptr ctrl1, ...) */ |
| -void xil_printf( const charptr ctrl1, ...) |
| -{ |
| - |
| - int long_flag; |
| - int dot_flag; |
| - |
| - params_t par; |
| - |
| - char ch; |
| - va_list argp; |
| - charptr ctrl = ctrl1; |
| - |
| - va_start( argp, ctrl1); |
| - |
| - for ( ; *ctrl; ctrl++) { |
| - |
| - /* move format string chars to buffer until a */ |
| - /* format control is found. */ |
| - if (*ctrl != '%') { |
| - outbyte(*ctrl); |
| - continue; |
| - } |
| - |
| - /* initialize all the flags for this format. */ |
| - dot_flag = long_flag = par.left_flag = par.do_padding = 0; |
| - par.pad_character = ' '; |
| - par.num2=32767; |
| - |
| - try_next: |
| - ch = *(++ctrl); |
| - |
| - if (isdigit(ch)) { |
| - if (dot_flag) |
| - par.num2 = getnum(&ctrl); |
| - else { |
| - if (ch == '0') |
| - par.pad_character = '0'; |
| - |
| - par.num1 = getnum(&ctrl); |
| - par.do_padding = 1; |
| - } |
| - ctrl--; |
| - goto try_next; |
| - } |
| - |
| - switch (tolower(ch)) { |
| - case '%': |
| - outbyte( '%'); |
| - continue; |
| - |
| - case '-': |
| - par.left_flag = 1; |
| - break; |
| - |
| - case '.': |
| - dot_flag = 1; |
| - break; |
| - |
| - case 'l': |
| - long_flag = 1; |
| - break; |
| - |
| - case 'd': |
| - if (long_flag || ch == 'D') { |
| - outnum( va_arg(argp, long), 10L, &par); |
| - continue; |
| - } |
| - else { |
| - outnum( va_arg(argp, int), 10L, &par); |
| - continue; |
| - } |
| - case 'x': |
| - outnum((long)va_arg(argp, int), 16L, &par); |
| - continue; |
| - |
| - case 's': |
| - outs( va_arg( argp, charptr), &par); |
| - continue; |
| - |
| - case 'c': |
| - outbyte( va_arg( argp, int)); |
| - continue; |
| - |
| - case '\\': |
| - switch (*ctrl) { |
| - case 'a': |
| - outbyte( 0x07); |
| - break; |
| - case 'h': |
| - outbyte( 0x08); |
| - break; |
| - case 'r': |
| - outbyte( 0x0D); |
| - break; |
| - case 'n': |
| - outbyte( 0x0D); |
| - outbyte( 0x0A); |
| - break; |
| - default: |
| - outbyte( *ctrl); |
| - break; |
| - } |
| - ctrl++; |
| - break; |
| - |
| - default: |
| - continue; |
| - } |
| - goto try_next; |
| - } |
| - va_end( argp); |
| -} |
| - |
| -/*---------------------------------------------------*/ |
| -- |
| 2.7.4 |
| |