Changeset d61c3a7 in mainline for kernel


Ignore:
Timestamp:
2011-05-15T14:44:13Z (15 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
8d308b9
Parents:
010be476 (diff), e0f52bf (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge mainline changes.

Location:
kernel
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • kernel/Makefile

    r010be476 rd61c3a7  
    9494        -fexec-charset=UTF-8 -fwide-exec-charset=UTF-32$(ENDIANESS) \
    9595        -finput-charset=UTF-8 -ffreestanding -fno-builtin -nostdlib -nostdinc \
    96         -Wall -Wextra -Wno-unused-parameter -Wmissing-prototypes \
     96        -std=gnu99 -Wall -Wextra -Wno-unused-parameter -Wmissing-prototypes \
    9797        -Werror-implicit-function-declaration -Wwrite-strings \
    9898        -pipe
     
    134134#
    135135AFLAGS =
    136 LFLAGS = -N -T $(LINK) -M
     136LFLAGS = -n -T $(LINK) -M
    137137
    138138#
  • kernel/arch/amd64/src/interrupt.c

    r010be476 rd61c3a7  
    6666void istate_decode(istate_t *istate)
    6767{
    68         printf("cs =%#0" PRIx64 "\trip=%p\t"
    69             "rfl=%#0" PRIx64 "\terr=%#0" PRIx64 "\n",
    70             istate->cs, (void *) istate->rip,
    71             istate->rflags, istate->error_word);
     68        printf("cs =%0#18" PRIx64 "\trip=%0#18" PRIx64 "\t"
     69            "rfl=%0#18" PRIx64 "\terr=%0#18" PRIx64 "\n",
     70            istate->cs, istate->rip, istate->rflags, istate->error_word);
    7271       
    7372        if (istate_from_uspace(istate))
    74                 printf("ss =%#0" PRIx64 "\n", istate->ss);
    75        
    76         printf("rax=%#0" PRIx64 "\trbx=%#0" PRIx64 "\t"
    77             "rcx=%#0" PRIx64 "\trdx=%#0" PRIx64 "\n",
     73                printf("ss =%0#18" PRIx64 "\n", istate->ss);
     74       
     75        printf("rax=%0#18" PRIx64 "\trbx=%0#18" PRIx64 "\t"
     76            "rcx=%0#18" PRIx64 "\trdx=%0#18" PRIx64 "\n",
    7877            istate->rax, istate->rbx, istate->rcx, istate->rdx);
    7978       
    80         printf("rsi=%p\trdi=%p\trbp=%p\trsp=%p\n",
    81             (void *) istate->rsi, (void *) istate->rdi,
    82             (void *) istate->rbp,
    83             istate_from_uspace(istate) ? ((void *) istate->rsp) :
    84             &istate->rsp);
    85        
    86         printf("r8 =%#0" PRIx64 "\tr9 =%#0" PRIx64 "\t"
    87             "r10=%#0" PRIx64 "\tr11=%#0" PRIx64 "\n",
     79        printf("rsi=%0#18" PRIx64 "\trdi=%0#18" PRIx64 "\t"
     80            "rbp=%0#18" PRIx64 "\trsp=%0#18" PRIx64 "\n",
     81            istate->rsi, istate->rdi, istate->rbp,
     82            istate_from_uspace(istate) ? istate->rsp :
     83            (uintptr_t) &istate->rsp);
     84       
     85        printf("r8 =%0#18" PRIx64 "\tr9 =%0#18" PRIx64 "\t"
     86            "r10=%0#18" PRIx64 "\tr11=%0#18" PRIx64 "\n",
    8887            istate->r8, istate->r9, istate->r10, istate->r11);
    8988       
    90         printf("r12=%#0" PRIx64 "\tr13=%#0" PRIx64 "\t"
    91             "r14=%#0" PRIx64 "\tr15=%#0" PRIx64 "\n",
     89        printf("r12=%0#18" PRIx64 "\tr13=%0#18" PRIx64 "\t"
     90            "r14=%0#18" PRIx64 "\tr15=%0#18" PRIx64 "\n",
    9291            istate->r12, istate->r13, istate->r14, istate->r15);
    9392}
  • kernel/arch/arm32/src/exception.c

    r010be476 rd61c3a7  
    174174void istate_decode(istate_t *istate)
    175175{
    176         printf("r0 =%#0" PRIx32 "\tr1 =%#0" PRIx32 "\t"
    177             "r2 =%#0" PRIx32 "\tr3 =%#0" PRIx32 "\n",
     176        printf("r0 =%0#10" PRIx32 "\tr1 =%0#10" PRIx32 "\t"
     177            "r2 =%0#10" PRIx32 "\tr3 =%0#10" PRIx32 "\n",
    178178            istate->r0, istate->r1, istate->r2, istate->r3);
    179         printf("r4 =%#" PRIx32 "\tr5 =%#0" PRIx32 "\t"
    180             "r6 =%#0" PRIx32 "\tr7 =%#0" PRIx32 "\n",
     179        printf("r4 =%0#10" PRIx32 "\tr5 =%0#10" PRIx32 "\t"
     180            "r6 =%0#10" PRIx32 "\tr7 =%0#10" PRIx32 "\n",
    181181            istate->r4, istate->r5, istate->r6, istate->r7);
    182         printf("r8 =%#0" PRIx32 "\tr9 =%#0" PRIx32 "\t"
    183             "r10=%#0" PRIx32 "\tfp =%p\n",
    184             istate->r8, istate->r9, istate->r10,
    185             (void *) istate->fp);
    186         printf("r12=%#0" PRIx32 "\tsp =%p\tlr =%p\tspsr=%p\n",
    187             istate->r12, (void *) istate->sp,
    188             (void *) istate->lr, (void *) istate->spsr);
     182        printf("r8 =%0#10" PRIx32 "\tr9 =%0#10" PRIx32 "\t"
     183            "r10=%0#10" PRIx32 "\tfp =%0#10" PRIx32 "\n",
     184            istate->r8, istate->r9, istate->r10, istate->fp);
     185        printf("r12=%0#10" PRIx32 "\tsp =%0#10" PRIx32 "\t"
     186            "lr =%0#10" PRIx32 "\tspsr=%0#10" PRIx32 "\n",
     187            istate->r12, istate->sp, istate->lr, istate->spsr);
    189188}
    190189
  • kernel/arch/ia32/Makefile.inc

    r010be476 rd61c3a7  
    3535ENDIANESS = LE
    3636
    37 CMN1 = -m32
     37CMN1 = -m32 -fno-omit-frame-pointer
    3838GCC_CFLAGS += $(CMN1)
    3939ICC_CFLAGS += $(CMN1)
  • kernel/arch/ia32/include/barrier.h

    r010be476 rd61c3a7  
    5454NO_TRACE static inline void cpuid_serialization(void)
    5555{
     56#ifndef __IN_SHARED_LIBC__
    5657        asm volatile (
    5758                "xorl %%eax, %%eax\n"
     
    5960                ::: "eax", "ebx", "ecx", "edx", "memory"
    6061        );
     62#else
     63        /* Must not clobber PIC register ebx */
     64        asm volatile (
     65                "movl %%ebx, %%esi\n"
     66                "xorl %%eax, %%eax\n"
     67                "cpuid\n"
     68                "movl %%esi, %%ebx\n"
     69                ::: "eax", "ecx", "edx", "esi", "memory"
     70        );
     71#endif
    6172}
    6273
  • kernel/arch/ia32/src/interrupt.c

    r010be476 rd61c3a7  
    6666void istate_decode(istate_t *istate)
    6767{
    68         printf("cs =%#0" PRIx32 "\teip=%p\t"
    69             "efl=%#0" PRIx32 "\terr=%#0" PRIx32 "\n",
    70             istate->cs, (void *) istate->eip,
    71             istate->eflags, istate->error_word);
    72        
    73         printf("ds =%#0" PRIx32 "\tes =%#0" PRIx32 "\t"
    74             "fs =%#0" PRIx32 "\tgs =%#0" PRIx32 "\n",
     68        printf("cs =%0#10" PRIx32 "\teip=%0#10" PRIx32 "\t"
     69            "efl=%0#10" PRIx32 "\terr=%0#10" PRIx32 "\n",
     70            istate->cs, istate->eip, istate->eflags, istate->error_word);
     71       
     72        printf("ds =%0#10" PRIx32 "\tes =%0#10" PRIx32 "\t"
     73            "fs =%0#10" PRIx32 "\tgs =%0#10" PRIx32 "\n",
    7574            istate->ds, istate->es, istate->fs, istate->gs);
    7675       
    7776        if (istate_from_uspace(istate))
    78                 printf("ss =%#0" PRIx32 "\n", istate->ss);
    79        
    80         printf("eax=%#0" PRIx32 "\tebx=%#0" PRIx32 "\t"
    81             "ecx=%#0" PRIx32 "\tedx=%#0" PRIx32 "\n",
     77                printf("ss =%0#10" PRIx32 "\n", istate->ss);
     78       
     79        printf("eax=%0#10" PRIx32 "\tebx=%0#10" PRIx32 "\t"
     80            "ecx=%0#10" PRIx32 "\tedx=%0#10" PRIx32 "\n",
    8281            istate->eax, istate->ebx, istate->ecx, istate->edx);
    8382       
    84         printf("esi=%p\tedi=%p\tebp=%p\tesp=%p\n",
    85             (void *) istate->esi, (void *) istate->edi,
    86             (void *) istate->ebp,
    87             istate_from_uspace(istate) ? ((void *) istate->esp) :
    88             &istate->esp);
     83        printf("esi=%0#10" PRIx32 "\tedi=%0#10" PRIx32 "\t"
     84            "ebp=%0#10" PRIx32 "\tesp=%0#10" PRIx32 "\n",
     85            istate->esi, istate->edi, istate->ebp,
     86            istate_from_uspace(istate) ? istate->esp :
     87            (uintptr_t) &istate->esp);
    8988}
    9089
  • kernel/arch/mips32/src/exception.c

    r010be476 rd61c3a7  
    7474void istate_decode(istate_t *istate)
    7575{
    76         printf("epc=%p\tsta=%#010" PRIx32 "\t"
     76        printf("epc=%#010" PRIx32 "\tsta=%#010" PRIx32 "\t"
    7777            "lo =%#010" PRIx32 "\thi =%#010" PRIx32 "\n",
    78             (void *) istate->epc, istate->status,
    79             istate->lo, istate->hi);
     78            istate->epc, istate->status, istate->lo, istate->hi);
    8079       
    8180        printf("a0 =%#010" PRIx32 "\ta1 =%#010" PRIx32 "\t"
     
    107106            istate->s8, istate->at, istate->kt0, istate->kt1);
    108107       
    109         printf("sp =%p\tra =%p\tgp =%p\n",
    110             (void *) istate->sp, (void *) istate->ra,
    111             (void *) istate->gp);
     108        printf("sp =%#010" PRIx32 "\tra =%#010" PRIx32 "\t"
     109            "gp =%#010" PRIx32 "\n",
     110            istate->sp, istate->ra, istate->gp);
    112111}
    113112
  • kernel/arch/mips32/src/mm/frame.c

    r010be476 rd61c3a7  
    8888        /* gxemul devices */
    8989        if (overlaps(frame << ZERO_PAGE_WIDTH, ZERO_PAGE_SIZE,
    90             0x10000000, MB2SIZE(256)))
     90            0x10000000, MiB2SIZE(256)))
    9191                return false;
    9292#endif
  • kernel/arch/ppc32/src/interrupt.c

    r010be476 rd61c3a7  
    5454void istate_decode(istate_t *istate)
    5555{
    56         printf("r0 =%#0" PRIx32 "\tr1 =%p\tr2 =%#0" PRIx32 "\n",
    57             istate->r0, (void *) istate->sp, istate->r2);
     56        printf("r0 =%0#10" PRIx32 "\tr1 =%0#10" PRIx32 "\t"
     57            "r2 =%0#10" PRIx32 "\n", istate->r0, istate->sp, istate->r2);
    5858       
    59         printf("r3 =%#0" PRIx32 "\tr4 =%#0" PRIx32 "\tr5 =%#0" PRIx32 "\n",
    60             istate->r3, istate->r4, istate->r5);
     59        printf("r3 =%0#10" PRIx32 "\tr4 =%0#10" PRIx32 "\t"
     60            "r5 =%0#10" PRIx32 "\n", istate->r3, istate->r4, istate->r5);
    6161       
    62         printf("r6 =%#0" PRIx32 "\tr7 =%#0" PRIx32 "\tr8 =%#0" PRIx32 "\n",
    63             istate->r6, istate->r7, istate->r8);
     62        printf("r6 =%0#10" PRIx32 "\tr7 =%0#10" PRIx32 "\t"
     63            "r8 =%0#10" PRIx32 "\n", istate->r6, istate->r7, istate->r8);
    6464       
    65         printf("r9 =%#0" PRIx32 "\tr10=%#0" PRIx32 "\tr11=%#0" PRIx32 "\n",
    66             istate->r9, istate->r10, istate->r11);
     65        printf("r9 =%0#10" PRIx32 "\tr10=%0#10" PRIx32 "\t"
     66            "r11=%0#10" PRIx32 "\n", istate->r9, istate->r10, istate->r11);
    6767       
    68         printf("r12=%#0" PRIx32 "\tr13=%#0" PRIx32 "\tr14=%#0" PRIx32 "\n",
    69             istate->r12, istate->r13, istate->r14);
     68        printf("r12=%0#10" PRIx32 "\tr13=%0#10" PRIx32 "\t"
     69            "r14=%0#10" PRIx32 "\n", istate->r12, istate->r13, istate->r14);
    7070       
    71         printf("r15=%#0" PRIx32 "\tr16=%#0" PRIx32 "\tr17=%#0" PRIx32 "\n",
    72             istate->r15, istate->r16, istate->r17);
     71        printf("r15=%0#10" PRIx32 "\tr16=%0#10" PRIx32 "\t"
     72            "r17=%0#10" PRIx32 "\n", istate->r15, istate->r16, istate->r17);
    7373       
    74         printf("r18=%#0" PRIx32 "\tr19=%#0" PRIx32 "\tr20=%#0" PRIx32 "\n",
    75             istate->r18, istate->r19, istate->r20);
     74        printf("r18=%0#10" PRIx32 "\tr19=%0#10" PRIx32 "\t"
     75            "r20=%0#10" PRIx32 "\n", istate->r18, istate->r19, istate->r20);
    7676       
    77         printf("r21=%#0" PRIx32 "\tr22=%#0" PRIx32 "\tr23=%#0" PRIx32 "\n",
    78             istate->r21, istate->r22, istate->r23);
     77        printf("r21=%0#10" PRIx32 "\tr22=%0#10" PRIx32 "\t"
     78            "r23=%0#10" PRIx32 "\n", istate->r21, istate->r22, istate->r23);
    7979       
    80         printf("r24=%#0" PRIx32 "\tr25=%#0" PRIx32 "\tr26=%#0" PRIx32 "\n",
    81             istate->r24, istate->r25, istate->r26);
     80        printf("r24=%0#10" PRIx32 "\tr25=%0#10" PRIx32 "\t"
     81            "r26=%0#10" PRIx32 "\n", istate->r24, istate->r25, istate->r26);
    8282       
    83         printf("r27=%#0" PRIx32 "\tr28=%#0" PRIx32 "\tr29=%#0" PRIx32 "\n",
    84             istate->r27, istate->r28, istate->r29);
     83        printf("r27=%0#10" PRIx32 "\tr28=%0#10" PRIx32 "\t"
     84            "r29=%0#10" PRIx32 "\n", istate->r27, istate->r28, istate->r29);
    8585       
    86         printf("r30=%#0" PRIx32 "\tr31=%#0" PRIx32 "\n",
     86        printf("r30=%0#10" PRIx32 "\tr31=%0#10" PRIx32 "\n",
    8787            istate->r30, istate->r31);
    8888       
    89         printf("cr =%#0" PRIx32 "\tpc =%p\tlr =%p\n",
    90             istate->cr, (void *) istate->pc, (void *) istate->lr);
     89        printf("cr =%0#10" PRIx32 "\tpc =%0#10" PRIx32 "\t"
     90            "lr =%0#10" PRIx32 "\n", istate->cr, istate->pc, istate->lr);
    9191       
    92         printf("ctr=%#0" PRIx32 "\txer=%#0" PRIx32 "\tdar=%#0" PRIx32 "\n",
    93             istate->ctr, istate->xer, istate->dar);
     92        printf("ctr=%0#10" PRIx32 "\txer=%0#10" PRIx32 "\t"
     93            "dar=%0#10" PRIx32 "\n", istate->ctr, istate->xer, istate->dar);
    9494       
    95         printf("srr1=%p\n", (void *) istate->srr1);
     95        printf("srr1=%0#10" PRIx32 "\n", istate->srr1);
    9696}
    9797
  • kernel/generic/include/macros.h

    r010be476 rd61c3a7  
    9595        overlaps(KA2PA((x)), (szx), KA2PA((y)), (szy))
    9696
    97 #define SIZE2KB(size)  ((size) >> 10)
    98 #define SIZE2MB(size)  ((size) >> 20)
    99 
    100 #define KB2SIZE(kb)  ((kb) << 10)
    101 #define MB2SIZE(mb)  ((mb) << 20)
     97#define KiB2SIZE(kb)  ((kb) << 10)
     98#define MiB2SIZE(mb)  ((mb) << 20)
    10299
    103100#define STRING(arg)      STRING_ARG(arg)
  • kernel/generic/include/str.h

    r010be476 rd61c3a7  
    9999extern int str_uint64(const char *, char **, unsigned int, bool, uint64_t *);
    100100
    101 extern void order_suffix(const uint64_t val, uint64_t *rv, char *suffix);
     101extern void order_suffix(const uint64_t, uint64_t *, char *);
     102extern void bin_order_suffix(const uint64_t, uint64_t *, const char **, bool);
    102103
    103104#endif
  • kernel/generic/src/lib/str.c

    r010be476 rd61c3a7  
    922922void order_suffix(const uint64_t val, uint64_t *rv, char *suffix)
    923923{
    924         if (val > 10000000000000000000ULL) {
    925                 *rv = val / 1000000000000000000ULL;
     924        if (val > UINT64_C(10000000000000000000)) {
     925                *rv = val / UINT64_C(1000000000000000000);
    926926                *suffix = 'Z';
    927         } else if (val > 1000000000000000000ULL) {
    928                 *rv = val / 1000000000000000ULL;
     927        } else if (val > UINT64_C(1000000000000000000)) {
     928                *rv = val / UINT64_C(1000000000000000);
    929929                *suffix = 'E';
    930         } else if (val > 1000000000000000ULL) {
    931                 *rv = val / 1000000000000ULL;
     930        } else if (val > UINT64_C(1000000000000000)) {
     931                *rv = val / UINT64_C(1000000000000);
    932932                *suffix = 'T';
    933         } else if (val > 1000000000000ULL) {
    934                 *rv = val / 1000000000ULL;
     933        } else if (val > UINT64_C(1000000000000)) {
     934                *rv = val / UINT64_C(1000000000);
    935935                *suffix = 'G';
    936         } else if (val > 1000000000ULL) {
    937                 *rv = val / 1000000ULL;
     936        } else if (val > UINT64_C(1000000000)) {
     937                *rv = val / UINT64_C(1000000);
    938938                *suffix = 'M';
    939         } else if (val > 1000000ULL) {
    940                 *rv = val / 1000ULL;
     939        } else if (val > UINT64_C(1000000)) {
     940                *rv = val / UINT64_C(1000);
    941941                *suffix = 'k';
    942942        } else {
     
    946946}
    947947
     948void bin_order_suffix(const uint64_t val, uint64_t *rv, const char **suffix,
     949    bool fixed)
     950{
     951        if (val > UINT64_C(1152921504606846976)) {
     952                *rv = val / UINT64_C(1125899906842624);
     953                *suffix = "EiB";
     954        } else if (val > UINT64_C(1125899906842624)) {
     955                *rv = val / UINT64_C(1099511627776);
     956                *suffix = "TiB";
     957        } else if (val > UINT64_C(1099511627776)) {
     958                *rv = val / UINT64_C(1073741824);
     959                *suffix = "GiB";
     960        } else if (val > UINT64_C(1073741824)) {
     961                *rv = val / UINT64_C(1048576);
     962                *suffix = "MiB";
     963        } else if (val > UINT64_C(1048576)) {
     964                *rv = val / UINT64_C(1024);
     965                *suffix = "KiB";
     966        } else {
     967                *rv = val;
     968                if (fixed)
     969                        *suffix = "B  ";
     970                else
     971                        *suffix = "B";
     972        }
     973}
     974
    948975/** @}
    949976 */
  • kernel/generic/src/main/main.c

    r010be476 rd61c3a7  
    223223        slab_enable_cpucache();
    224224       
    225         printf("Detected %u CPU(s), %" PRIu64 " MiB free memory\n",
    226             config.cpu_count, SIZE2MB(zones_total_size()));
     225        uint64_t size;
     226        const char *size_suffix;
     227        bin_order_suffix(zones_total_size(), &size, &size_suffix, false);
     228        printf("Detected %u CPU(s), %" PRIu64 " %s free memory\n",
     229            config.cpu_count, size, size_suffix);
    227230       
    228231        cpu_init();
  • kernel/generic/src/mm/frame.c

    r010be476 rd61c3a7  
    6060#include <macros.h>
    6161#include <config.h>
     62#include <str.h>
    6263
    6364zones_t zones;
     
    13951396        bool available = zone_flags_available(flags);
    13961397       
     1398        uint64_t size;
     1399        const char *size_suffix;
     1400        bin_order_suffix(FRAMES2SIZE(count), &size, &size_suffix, false);
     1401       
    13971402        printf("Zone number:       %zu\n", znum);
    13981403        printf("Zone base address: %p\n", (void *) base);
    1399         printf("Zone size:         %zu frames (%zu KiB)\n", count,
    1400             SIZE2KB(FRAMES2SIZE(count)));
     1404        printf("Zone size:         %zu frames (%" PRIu64 " %s)\n", count,
     1405            size, size_suffix);
    14011406        printf("Zone flags:        %c%c%c\n",
    14021407            available ? 'A' : ' ',
     
    14051410       
    14061411        if (available) {
    1407                 printf("Allocated space:   %zu frames (%zu KiB)\n",
    1408                     busy_count, SIZE2KB(FRAMES2SIZE(busy_count)));
    1409                 printf("Available space:   %zu frames (%zu KiB)\n",
    1410                     free_count, SIZE2KB(FRAMES2SIZE(free_count)));
     1412                bin_order_suffix(FRAMES2SIZE(busy_count), &size, &size_suffix,
     1413                    false);
     1414                printf("Allocated space:   %zu frames (%" PRIu64 " %s)\n",
     1415                    busy_count, size, size_suffix);
     1416                bin_order_suffix(FRAMES2SIZE(free_count), &size, &size_suffix,
     1417                    false);
     1418                printf("Available space:   %zu frames (%" PRIu64 " %s)\n",
     1419                    free_count, size, size_suffix);
    14111420        }
    14121421}
Note: See TracChangeset for help on using the changeset viewer.