Subversion Repositories HelenOS

Rev

Rev 1705 | Rev 1780 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1705 Rev 1742
Line 65... Line 65...
65
 
65
 
66
#define TLB_EXC ((char *) 0x80000000)
66
#define TLB_EXC ((char *) 0x80000000)
67
#define NORM_EXC ((char *) 0x80000180)
67
#define NORM_EXC ((char *) 0x80000180)
68
#define CACHE_EXC ((char *) 0x80000100)
68
#define CACHE_EXC ((char *) 0x80000100)
69
 
69
 
-
 
70
 
-
 
71
/* Why the linker moves the variable 64K away in assembler
-
 
72
 * when not in .text section ????????
-
 
73
 */
-
 
74
__address supervisor_sp __attribute__ ((section (".text")));
-
 
75
/* Stack pointer saved when entering user mode */
-
 
76
/* TODO: How do we do it on SMP system???? */
70
bootinfo_t bootinfo;
77
bootinfo_t bootinfo __attribute__ ((section (".text")));
71
 
78
 
72
void arch_pre_main(void)
79
void arch_pre_main(void)
73
{
80
{
74
    /* Setup usermode */
81
    /* Setup usermode */
75
    init.cnt = bootinfo.cnt;
82
    init.cnt = bootinfo.cnt;
Line 118... Line 125...
118
}
125
}
119
 
126
 
120
void arch_post_mm_init(void)
127
void arch_post_mm_init(void)
121
{
128
{
122
#ifdef CONFIG_FB
129
#ifdef CONFIG_FB
123
        fb_init(0x12000000, 640, 480, 24, 1920); // gxemul framebuffer
130
    fb_init(0x12000000, 640, 480, 24, 1920); // gxemul framebuffer
124
#endif
131
#endif
125
        sysinfo_set_item_val("machine." STRING(MACHINE),NULL,1);
132
    sysinfo_set_item_val("machine." STRING(MACHINE),NULL,1);
126
}
133
}
127
 
134
 
128
void arch_pre_smp_init(void)
135
void arch_pre_smp_init(void)
129
{
136
{
130
}
137
}
131
 
138
 
132
void arch_post_smp_init(void)
139
void arch_post_smp_init(void)
133
{
140
{
134
}
141
}
135
 
142
 
136
/* Stack pointer saved when entering user mode */
-
 
137
/* TODO: How do we do it on SMP system???? */
-
 
138
 
-
 
139
/* Why the linker moves the variable 64K away in assembler
-
 
140
 * when not in .text section ????????
-
 
141
 */
-
 
142
__address supervisor_sp __attribute__ ((section (".text")));
-
 
143
 
-
 
144
void userspace(uspace_arg_t *kernel_uarg)
143
void userspace(uspace_arg_t *kernel_uarg)
145
{
144
{
146
    /* EXL=1, UM=1, IE=1 */
145
    /* EXL=1, UM=1, IE=1 */
147
    cp0_status_write(cp0_status_read() | (cp0_status_exl_exception_bit |
146
    cp0_status_write(cp0_status_read() | (cp0_status_exl_exception_bit |
148
                          cp0_status_um_bit |
147
                          cp0_status_um_bit |