Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 2345 → Rev 2346

/branches/arm/uspace/libc/arch/arm32/include/psthread.h
38,6 → 38,8
 
#include <types.h>
#include <align.h>
#include "thread.h"
 
#define STACK_ITEM_SIZE 4
 
/** see <a href="http://www.arm.com/support/faqdev/14269.html">ABI</a> for details */
48,7 → 50,7
#define context_set(c, _pc, stack, size, ptls) \
(c)->pc = (sysarg_t) (_pc); \
(c)->sp = ((sysarg_t) (stack)) + (size) - SP_DELTA; \
(c)->tls = ((sysarg_t)(ptls)) + sizeof(tcb_t);
(c)->tls = ((sysarg_t)(ptls)) + sizeof(tcb_t) + ARM_TP_OFFSET;
 
 
typedef struct {
/branches/arm/uspace/libc/arch/arm32/include/thread.h
39,6 → 39,8
 
#define THREAD_INITIAL_STACK_PAGES_NO 1
 
#define ARM_TP_OFFSET (-8)
 
typedef struct {
void *pst_data;
} tcb_t;
45,7 → 47,8
 
static inline void __tcb_set(tcb_t *tcb)
{
void *tls = (void *)tcb + sizeof(tcb_t);
void *tls = (void *)tcb;
tls += sizeof(tcb_t) + ARM_TP_OFFSET;
asm volatile (
"mov r9, %0"
:
60,8 → 63,7
"mov %0, r9"
: "=r"(ret)
);
ret -= sizeof(tcb_t);
return (tcb_t *)ret;
return (tcb_t *)(ret - ARM_TP_OFFSET - sizeof(tcb_t));
}
 
#endif