Ignore:
Timestamp:
2007-06-08T15:02:49Z (18 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
c03ee1c
Parents:
3ee8a075
Message:

Merge arm32 into trunk.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/libc/arch/arm32/include/psthread.h

    r3ee8a075 r6b781c0  
    11/*
    2  * Copyright (c) 2006 Ondrej Palkovsky
     2 * Copyright (c) 2007 Michal Kebrt
    33 * All rights reserved.
    44 *
     
    3030 * @{
    3131 */
    32 /** @file
    33  * @ingroup libcarm32   
     32/** @file 
     33 *  @brief psthread related declarations.
    3434 */
    3535
     
    3838
    3939#include <types.h>
     40#include <align.h>
     41#include "thread.h"
    4042
    41 #define SP_DELTA        0       /* TODO */
     43/** Size of a stack item */
     44#define STACK_ITEM_SIZE         4
    4245
     46/** Stack alignment - see <a href="http://www.arm.com/support/faqdev/14269.html">ABI</a> for details */
     47#define STACK_ALIGNMENT         8
     48
     49#define SP_DELTA        (0 + ALIGN_UP(STACK_ITEM_SIZE, STACK_ALIGNMENT))
     50
     51
     52/** Sets data to the context.
     53 * 
     54 *  @param c     Context (#context_t).
     55 *  @param _pc   Program counter.
     56 *  @param stack Stack address.
     57 *  @param size  Stack size.
     58 *  @param ptls  Pointer to the TCB.
     59 */
     60#define context_set(c, _pc, stack, size, ptls)                  \
     61        (c)->pc = (sysarg_t) (_pc);                             \
     62        (c)->sp = ((sysarg_t) (stack)) + (size) - SP_DELTA;     \
     63        (c)->tls = ((sysarg_t)(ptls)) + sizeof(tcb_t) + ARM_TP_OFFSET;
     64
     65
     66/** Thread context.
     67 *
     68 *  Only registers preserved accross function calls are included. r9 is used
     69 *  to store a TLS address. -ffixed-r9 gcc forces gcc not to use this
     70 *  register. -mtp=soft forces gcc to use #__aeabi_read_tp to obtain
     71 *  TLS address.
     72 */
    4373typedef struct  {
    4474        uint32_t sp;
    4575        uint32_t pc;
     76        uint32_t r4;
     77        uint32_t r5;
     78        uint32_t r6;
     79        uint32_t r7;
     80        uint32_t r8;
    4681        uint32_t tls;
     82        uint32_t r10;
     83        uint32_t r11;
    4784} context_t;
     85
    4886
    4987#endif
Note: See TracChangeset for help on using the changeset viewer.