Subversion Repositories HelenOS

Rev

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

Rev 2179 Rev 2190
Line 34... Line 34...
34
 
34
 
35
#ifndef KERN_arm32_ASM_H_
35
#ifndef KERN_arm32_ASM_H_
36
#define KERN_arm32_ASM_H_
36
#define KERN_arm32_ASM_H_
37
 
37
 
38
#include <arch/types.h>
38
#include <arch/types.h>
-
 
39
#include <arch/stack.h>
-
 
40
#include <config.h>
39
 
41
 
40
static inline void cpu_sleep(void)
42
static inline void cpu_sleep(void)
41
{
43
{
42
    /* TODO */
44
    // not implemented on gxemul
43
}
45
}
44
 
46
 
45
/** Return base address of current stack
47
/** Return base address of current stack
46
 *
48
 *
47
 * Return the base address of the current stack.
49
 * Return the base address of the current stack.
48
 * The stack is assumed to be STACK_SIZE bytes long.
50
 * The stack is assumed to be STACK_SIZE bytes long.
49
 * The stack must start on page boundary.
51
 * The stack must start on page boundary.
50
 */
52
 */
51
static inline uintptr_t get_stack_base(void)
53
static inline uintptr_t get_stack_base(void)
52
{
54
{
53
    /* TODO */ 
55
    uintptr_t v;
-
 
56
    asm volatile ("and %0, sp, %1\n" : "=r" (v) : "r" (~(STACK_SIZE-1)));
54
    return NULL;
57
    return v;
55
}
58
}
56
 
59
 
57
extern void cpu_halt(void);
60
extern void cpu_halt(void);
58
extern void asm_delay_loop(uint32_t t);
61
extern void asm_delay_loop(uint32_t t);
59
extern void userspace_asm(uintptr_t ustack, uintptr_t uspace_uarg,
62
extern void userspace_asm(uintptr_t ustack, uintptr_t uspace_uarg,