.quad   x86_64_start_kernel
        ENTRY(initial_gs)
        .quad   INIT_PER_CPU_VAR(irq_stack_union)
-       __FINITDATA
 
        ENTRY(stack_start)
        .quad  init_thread_union+THREAD_SIZE-8
        .word  0
+       __FINITDATA
 
 bad_address:
        jmp bad_address
        i = i + 1 ;                                     \
        .endr
 
+       .data
        /*
         * This default setting generates an ident mapping at address 0x100000
         * and a mapping for the kernel that precisely maps virtual address
 
 
 void set_kernel_text_rw(void)
 {
-       unsigned long start = PFN_ALIGN(_stext);
+       unsigned long start = PFN_ALIGN(_text);
        unsigned long end = PFN_ALIGN(__start_rodata);
 
        if (!kernel_set_to_readonly)
 
 void set_kernel_text_ro(void)
 {
-       unsigned long start = PFN_ALIGN(_stext);
+       unsigned long start = PFN_ALIGN(_text);
        unsigned long end = PFN_ALIGN(__start_rodata);
 
        if (!kernel_set_to_readonly)
 
 void mark_rodata_ro(void)
 {
-       unsigned long start = PFN_ALIGN(_stext), end = PFN_ALIGN(__end_rodata);
+       unsigned long start = PFN_ALIGN(_text), end = PFN_ALIGN(__end_rodata);
        unsigned long rodata_start =
                ((unsigned long)__start_rodata + PAGE_SIZE - 1) & PAGE_MASK;