~ubuntu-branches/ubuntu/trusty/grub2/trusty-updates

« back to all changes in this revision

Viewing changes to grub-core/lib/i386/relocator_common.S

  • Committer: Package Import Robot
  • Author(s): Colin Watson
  • Date: 2012-09-13 18:02:04 UTC
  • mfrom: (1.17.15 upstream)
  • mto: (17.6.27 experimental)
  • mto: This revision was merged to the branch mainline in revision 145.
  • Revision ID: package-import@ubuntu.com-20120913180204-mojnmocbimlom4im
Tags: upstream-2.00
ImportĀ upstreamĀ versionĀ 2.00

Show diffs side-by-side

added added

removed removed

Lines of Context:
42
42
        /* %rax contains now our new 'base'.  */
43
43
        mov     RAX, RSI
44
44
 
 
45
#ifdef __APPLE__
 
46
        LOCAL(cont0_offset) = LOCAL(cont0) - LOCAL(base)
 
47
        add     $LOCAL(cont0_offset), RAX
 
48
#else
45
49
        add     $(LOCAL(cont0) - LOCAL(base)), RAX
 
50
#endif
46
51
        jmp     *RAX
47
52
LOCAL(cont0):
48
53
        .endm
49
54
 
50
55
        .macro RELOAD_GDT
 
56
#ifdef __APPLE__
 
57
        LOCAL(cont1_offset) = LOCAL(cont1) - LOCAL(base)
 
58
        LOCAL(jump_vector_offset) = LOCAL(jump_vector) - LOCAL(base)
 
59
        LOCAL(gdt_offset) = LOCAL(gdt) - LOCAL(base)
 
60
        LOCAL(gdt_addr_offset) = LOCAL(gdt_addr) - LOCAL(base)
 
61
        LOCAL(gdtdesc_offset) = LOCAL(gdtdesc) - LOCAL(base)
 
62
 
 
63
        lea     LOCAL(cont1_offset) (RSI, 1), RAX
 
64
        movl    %eax, LOCAL(jump_vector_offset) (RSI, 1)
 
65
 
 
66
        lea     LOCAL(gdt_offset) (RSI, 1), RAX
 
67
        mov     RAX, (LOCAL(gdt_addr_offset)) (RSI, 1)
 
68
        
 
69
        /* Switch to compatibility mode. */
 
70
        lgdt    (LOCAL(gdtdesc_offset)) (RSI, 1)
 
71
 
 
72
        /* Update %cs.  */
 
73
        ljmp    *(LOCAL(jump_vector_offset)) (RSI, 1)
 
74
        .p2align        4
 
75
LOCAL(gdtdesc):
 
76
        LOCAL(gdtsize) = LOCAL(gdt_end) - LOCAL(gdt)
 
77
        .word   LOCAL(gdtsize)
 
78
#else
51
79
        lea     (LOCAL(cont1) - LOCAL(base)) (RSI, 1), RAX
52
80
        movl    %eax, (LOCAL(jump_vector) - LOCAL(base)) (RSI, 1)
53
81
 
63
91
        .p2align        4
64
92
LOCAL(gdtdesc):
65
93
        .word   LOCAL(gdt_end) - LOCAL(gdt)
 
94
#endif
66
95
LOCAL(gdt_addr):
67
96
#ifdef __x86_64__
68
97
        /* Filled by the code. */