Changeset 2cd0485d in mainline


Ignore:
Timestamp:
2005-10-29T16:06:21Z (19 years ago)
Author:
Josef Cejka <malyzelenyhnus@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
437ee6a4
Parents:
39cb79a
Message:

Fixed problem with va_arg macro for mips32. This solves problem with printing 64bit values on it.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • arch/mips32/include/arg.h

    r39cb79a r2cd0485d  
    3030#define __mips32_ARG_H__
    3131
    32 #include <stackarg.h>
     32//#include <stackarg.h>
     33
     34#include <arch/types.h>
     35
     36typedef struct va_list {
     37        int pos;
     38        __u8 *last;
     39} va_list;
     40
     41#define va_start(ap, lst)               \
     42        (ap).pos = sizeof(lst);                         \
     43        (ap).last = (__u8 *) &(lst)
     44
     45/**
     46* va_arg macro for MIPS32 - problem is that 64 bit values must be aligned on an 8-byte boundary (32bit values not)
     47* To satisfy this, paddings must be sometimes inserted.
     48*/
     49#define va_arg(ap, type)                \
     50        (*((type *)((ap).last + ((ap).pos  += sizeof(type) + ((sizeof(type)==8)&&(((ap).pos)&(4))?4:0)) - sizeof(type))))
     51
     52#define va_end(ap)
     53
     54
    3355
    3456#endif
Note: See TracChangeset for help on using the changeset viewer.