Subversion Repositories HelenOS

Rev

Rev 4130 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4130 Rev 4614
Line 307... Line 307...
307
 */
307
 */
308
static inline uintptr_t get_stack_base(void)
308
static inline uintptr_t get_stack_base(void)
309
{
309
{
310
    uintptr_t unbiased_sp;
310
    uintptr_t unbiased_sp;
311
   
311
   
312
    asm volatile ("add %%sp, %1, %0\n" : "=r" (unbiased_sp) : "i" (STACK_BIAS));
312
    asm volatile ("add %%sp, %1, %0\n" : "=&r" (unbiased_sp) : "i" (STACK_BIAS));
313
   
313
   
314
    return ALIGN_DOWN(unbiased_sp, STACK_SIZE);
314
    return ALIGN_DOWN(unbiased_sp, STACK_SIZE);
315
}
315
}
316
 
316
 
317
/** Read Trap Program Counter register.
317
/** Read Trap Program Counter register.
Line 371... Line 371...
371
 */
371
 */
372
static inline uint64_t asi_u64_read(asi_t asi, uintptr_t va)
372
static inline uint64_t asi_u64_read(asi_t asi, uintptr_t va)
373
{
373
{
374
    uint64_t v;
374
    uint64_t v;
375
   
375
   
376
    asm volatile ("ldxa [%1] %2, %0\n" : "=r" (v) : "r" (va), "i" ((unsigned) asi));
376
    asm volatile ("ldxa [%1] %2, %0\n" : "=&r" (v) : "r" (va), "i" ((unsigned) asi));
377
   
377
   
378
    return v;
378
    return v;
379
}
379
}
380
 
380
 
381
/** Store uint64_t to alternate space.
381
/** Store uint64_t to alternate space.