/kernel/trunk/arch/mips32/include/context_offset.h |
---|
48,4 → 48,4 |
#define EOFFSET_HI 0x78 |
#define EOFFSET_STATUS 0x7c |
#define EOFFSET_EPC 0x80 |
#define REGISTER_SPACE 132 |
#define REGISTER_SPACE 136 |
/kernel/trunk/arch/mips32/include/exception.h |
---|
90,6 → 90,7 |
__u32 status; /* cp0_status */ |
__u32 epc; /* cp0_epc */ |
__u32 padding; /* padding to align stack on 8 bytes boundary */ |
}; |
extern void exception(istate_t *istate); |
/kernel/trunk/arch/mips32/include/arg.h |
---|
31,24 → 31,19 |
#include <arch/types.h> |
typedef struct va_list { |
int pos; |
__u8 *last; |
} va_list; |
#define va_start(ap, lst) \ |
(ap).pos = sizeof(lst); \ |
(ap).last = (__u8 *) &(lst) |
/** |
* va_arg macro for MIPS32 - problem is that 64 bit values must be aligned on an 8-byte boundary (32bit values not) |
* To satisfy this, paddings must be sometimes inserted. |
*/ |
#define va_arg(ap, type) \ |
(*((type *)((ap).last + ((ap).pos += sizeof(type) + ((sizeof(type)==8)&&(((ap).pos)&(4))?4:0)) - sizeof(type)))) |
#define va_end(ap) |
typedef __address va_list; |
#define va_start(ap, lst) \ |
((ap) = (va_list)&(lst) + sizeof(lst)) |
#define va_arg(ap, type) \ |
(((type *)((ap) = (va_list)( (sizeof(type) <= 4) ? ((__address)((ap) + 2*4 - 1) & (~3)) : ((__address)((ap) + 2*8 -1) & (~7)) )))[-1]) |
#define va_end(ap) |
#endif |
/kernel/trunk/arch/mips32/include/context.h |
---|
32,9 → 32,9 |
#define STACK_ITEM_SIZE 4 |
/* |
* Put one item onto the stack to support get_stack_base(). |
* Put one item onto the stack to support get_stack_base() and align it up to 8 bytes boundary. |
*/ |
#define SP_DELTA (0+STACK_ITEM_SIZE) |
#define SP_DELTA ((0 + STACK_ITEM_SIZE + 7) & (~7)) |
#ifndef __ASM__ |