Rev 3022 | Rev 4221 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3022 | Rev 4055 | ||
---|---|---|---|
Line 38... | Line 38... | ||
38 | #include <printf/printf_core.h> |
38 | #include <printf/printf_core.h> |
39 | #include <putchar.h> |
39 | #include <putchar.h> |
40 | #include <print.h> |
40 | #include <print.h> |
41 | #include <arch/arg.h> |
41 | #include <arch/arg.h> |
42 | #include <macros.h> |
42 | #include <macros.h> |
43 | #include <func.h> |
43 | #include <string.h> |
44 | #include <arch.h> |
44 | #include <arch.h> |
45 | 45 | ||
46 | /** show prefixes 0x or 0 */ |
46 | /** show prefixes 0x or 0 */ |
47 | #define __PRINTF_FLAG_PREFIX 0x00000001 |
47 | #define __PRINTF_FLAG_PREFIX 0x00000001 |
48 | /** signed / unsigned number */ |
48 | /** signed / unsigned number */ |
Line 73... | Line 73... | ||
73 | PrintfQualifierByte = 0, |
73 | PrintfQualifierByte = 0, |
74 | PrintfQualifierShort, |
74 | PrintfQualifierShort, |
75 | PrintfQualifierInt, |
75 | PrintfQualifierInt, |
76 | PrintfQualifierLong, |
76 | PrintfQualifierLong, |
77 | PrintfQualifierLongLong, |
77 | PrintfQualifierLongLong, |
78 | PrintfQualifierNative, |
- | |
79 | PrintfQualifierPointer |
78 | PrintfQualifierPointer |
80 | } qualifier_t; |
79 | } qualifier_t; |
81 | 80 | ||
82 | static char digits_small[] = "0123456789abcdef"; |
81 | static char digits_small[] = "0123456789abcdef"; |
83 | static char digits_big[] = "0123456789ABCDEF"; |
82 | static char digits_big[] = "0123456789ABCDEF"; |
Line 430... | Line 429... | ||
430 | * - "hh" Signed or unsigned char.@n |
429 | * - "hh" Signed or unsigned char.@n |
431 | * - "h" Signed or unsigned short.@n |
430 | * - "h" Signed or unsigned short.@n |
432 | * - "" Signed or unsigned int (default value).@n |
431 | * - "" Signed or unsigned int (default value).@n |
433 | * - "l" Signed or unsigned long int.@n |
432 | * - "l" Signed or unsigned long int.@n |
434 | * - "ll" Signed or unsigned long long int.@n |
433 | * - "ll" Signed or unsigned long long int.@n |
435 | * - "z" unative_t (non-standard extension).@n |
- | |
436 | * |
434 | * |
437 | * |
435 | * |
438 | * CONVERSION:@n |
436 | * CONVERSION:@n |
439 | * - % Print percentile character itself. |
437 | * - % Print percentile character itself. |
440 | * |
438 | * |
Line 583... | Line 581... | ||
583 | if (fmt[i] == 'l') { |
581 | if (fmt[i] == 'l') { |
584 | i++; |
582 | i++; |
585 | qualifier = PrintfQualifierLongLong; |
583 | qualifier = PrintfQualifierLongLong; |
586 | } |
584 | } |
587 | break; |
585 | break; |
588 | case 'z': /* unative_t */ |
- | |
589 | qualifier = PrintfQualifierNative; |
- | |
590 | break; |
- | |
591 | default: |
586 | default: |
592 | /* default type */ |
587 | /* default type */ |
593 | qualifier = PrintfQualifierInt; |
588 | qualifier = PrintfQualifierInt; |
594 | --i; |
589 | --i; |
595 | } |
590 | } |
Line 684... | Line 679... | ||
684 | size = sizeof(unsigned long); |
679 | size = sizeof(unsigned long); |
685 | number = (uint64_t)va_arg(ap, unsigned long); |
680 | number = (uint64_t) va_arg(ap, unsigned long); |
686 | break; |
681 | break; |
687 | case PrintfQualifierLongLong: |
682 | case PrintfQualifierLongLong: |
688 | size = sizeof(unsigned long long); |
683 | size = sizeof(unsigned long long); |
689 | number = (uint64_t)va_arg(ap, |
684 | number = (uint64_t) va_arg(ap, unsigned long long); |
690 | unsigned long long); |
- | |
691 | break; |
685 | break; |
692 | case PrintfQualifierPointer: |
686 | case PrintfQualifierPointer: |
693 | size = sizeof(void *); |
687 | size = sizeof(void *); |
694 | number = (uint64_t)(unsigned long)va_arg(ap, |
688 | number = (uint64_t) (unsigned long) va_arg(ap, void *); |
695 | void *); |
- | |
696 | break; |
- | |
697 | case PrintfQualifierNative: |
- | |
698 | size = sizeof(unative_t); |
- | |
699 | number = (uint64_t)va_arg(ap, unative_t); |
- | |
700 | break; |
689 | break; |
701 | default: /* Unknown qualifier */ |
690 | default: /* Unknown qualifier */ |
702 | counter = -counter; |
691 | counter = -counter; |
703 | goto out; |
692 | goto out; |
704 | } |
693 | } |
Line 742... | Line 731... | ||
742 | } |
731 | } |
743 | counter += retval; |
732 | counter += retval; |
744 | } |
733 | } |
745 | 734 | ||
746 | out: |
735 | out: |
747 | - | ||
748 | return counter; |
736 | return counter; |
749 | } |
737 | } |
750 | 738 | ||
751 | /** @} |
739 | /** @} |
752 | */ |
740 | */ |