Subversion Repositories HelenOS-historic

Rev

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

Rev 897 Rev 938
Line 116... Line 116...
116
/* Why the linker moves the variable 64K away in assembler
116
/* Why the linker moves the variable 64K away in assembler
117
 * when not in .text section ????????
117
 * when not in .text section ????????
118
 */
118
 */
119
__address supervisor_sp __attribute__ ((section (".text")));
119
__address supervisor_sp __attribute__ ((section (".text")));
120
 
120
 
121
void userspace(void)
121
void userspace(__address entry)
122
{
122
{
123
    /* EXL=1, UM=1, IE=1 */
123
    /* EXL=1, UM=1, IE=1 */
124
    cp0_status_write(cp0_status_read() | (cp0_status_exl_exception_bit |
124
    cp0_status_write(cp0_status_read() | (cp0_status_exl_exception_bit |
125
                          cp0_status_um_bit |
125
                          cp0_status_um_bit |
126
                          cp0_status_ie_enabled_bit));
126
                          cp0_status_ie_enabled_bit));
127
    cp0_epc_write(UTEXT_ADDRESS);
127
    cp0_epc_write(entry);
128
    userspace_asm(USTACK_ADDRESS+PAGE_SIZE);
128
    userspace_asm(USTACK_ADDRESS+PAGE_SIZE);
129
    while (1)
129
    while (1)
130
        ;
130
        ;
131
}
131
}
132
 
132