ff
     ˆÅÄƒ_{_ˆI|¥�+ÿ¿Ã ®    /* SPDX-License-Identifier: GPL-2.0-only */
/*
 * purgatory:  setup code
 *
 * Copyright (C) 2003,2004  Eric Biederman (ebiederm@xmission.com)
 * Copyright (C) 2014 Red Hat Inc.
 *
 * This code has been taken from kexec-tools.
 */
#include <linux/linkage.h>
#include <asm/purgatory.h>

	.text
	.balign 16
	.code64

SYM_CODE_START(purgatory_start)
	/* Load a gdt so I know what the segment registers are */
	lgdt	gdt(%rip)

	/* load the data segments */
	movl	$0x18, %eax	/* data segment */
	movl	%eax, %ds
	movl	%eax, %es
	movl	%eax, %ss
	movl	%eax, %fs
	movl	%eax, %gs

	/* Setup a stack */
	leaq	lstack_end(%rip), %rsp

	/* Call the C code */
	call purgatory
	jmp	entry64
SYM_CODE_END(purgatory_start)

	.section ".rodata"
	.balign 16
SYM_DATA_START_LOCAL(gdt)
	/* 0x00 unusable segment
	 * 0x08 unused
	 * so use them as the gdt ptr
	 */
	.word	gdt_end - gdt - 1
	.quad	gdt
	.word	0, 0, 0

	/* 0x10 4GB flat code segment */
	.word	0xFFFF, 0x0000, 0x9A00, 0x00AF

	/* 0x18 4GB flat data segment */
	.word	0xFFFF, 0x0000, 0x9200, 0x00CF
SYM_DATA_END_LABEL(gdt, SYM_L_LOCAL, gdt_end)

	.bss
	.balign 4096
SYM_DATA_START_LOCAL(lstack)
	.skip 4096
SYM_DATA_END_LABEL(lstack, SYM_L_LOCAL, lstack_end)
  $   ˆl–Ãa¾”ŠhŠq@3p¸&TÅ£Æ…_l-ÀÄ ?÷     Þ•    �     œ$    I      xa  ?   ya  a   ¹a      b  k   <b  Ç   ¨b  €   pc  &   ñc  =   d  &   Vd    }d  -   ‘e  .   ¿e     îe  .   ÿe     .f      Jf  4   kf      f  5   ¼f  -   òf  .    g  0   Og  1   €g  $   ²g  4   ×g  /   h     <h  q   Th  (   Æh  $   ïh     i     4i  :   Ti  6   �i  1   Æi  1   øi  !   *j  2   Lj  (   j     ¨j     ¸j  !   Òj     ôj     k     *k     ;k  .   Jk     yk  S   …k     Ùk     êk     	l  9   !l  m   [l  )   Él  :   ól  9   .m  .   hm  '   —m  &   ¿m     æm  3   üm  5   0n     fn     ln  P   yn  \   Ên  v   'o  [   žo  U   úo     Pp     ep  ;   vp     ²p     ¿p     Ôp  Z   ãp     >q     Oq     ^q  =   wq     µq     Êq  -   Ûq  +   	r     5r  )   Sr     }r  #   Œr     °r  T   År  8   s  Û  Ss  *   /u  ,   Zu  4   ‡u  =   ¼u  R   úu  1   Mv  D   v  L   Äv  A   w  '   Sw  &   {w  (   ¢w  '   Ëw  +   ów  4   x  !   Tx  ,   vx  9   £x  -   Ýx     y  #   )y     My  $   ly     ‘y      ®y  "   Ïy     òy  !   z  #   2z     Vz     kz     ~z     ’z     §z  /   Çz  2   ÷z  1   *{     \{     q{     „{     ˜{  /   ­{  '   Ý{     |  .   |     K|  <   f|     £|  -   ½|  R   ë|  H   >}  Q   ‡}  A   Ù}  e   ~  f   �~  I   è~  /   2  H   b  7   «  <   ã  7    €     X€  (   k€  B   ”€     ×€     î€     	�     �      *�     K�  5   d�  1   š�  @   Ì�  0   ‚     >‚  *   ^‚     ‰‚     ›‚  #   ´‚  !   Ø‚     ú‚     ƒ  K   4ƒ  7   €ƒ  5   ¸ƒ  -   îƒ     „     6„  !   R„     t„  '   Ž„  -   ¶„  -   ä„      …  5   3…     i…      ‰…     ª…  "   Â…  !   å…  "   †  !   *†  $   L†  ,   q†  .   ž†  .   Í†  .   ü†     +‡  H   K‡  6   ”‡  (   Ë‡  >   ô‡  $   3ˆ      Xˆ     yˆ     ˜ˆ     Ÿˆ     «ˆ  ¨   Ãˆ     l‰     y‰  %   �‰  !   ¶‰  :  Ø‰  %   ‹  -   9‹     g‹     x‹     ‰‹     ›‹  *   ¨‹  #   Ó‹  -   ÷‹  -   %Œ  ”   SŒ     èŒ     õŒ  5   �  õ   B�  [   8Ž  ú  ”Ž  ­  �’  ˜  =•  »  Ö�  g  ’     ú¡    £      ¤  (   9¤  -   b¤  >   �¤  =   Ï¤  8   ¥  <   F¥  .   ƒ¥     ²¥  0   É¥  3   ú¥  1   .¦     `¦     m¦     ˆ¦  ´   ”¦  0   I§  1   z§  *   ¬§  J   ×§  2   "¨  ¤  U¨  &   ú©  /   !ª  2   Qª  E   „ª  V   Êª     !«  5   :«  .   p«  7   Ÿ«  -   ×«  +   ¬  /   1¬     a¬  %   o¬  /   •¬  *   Å¬  &   ð¬  !   ­  +   9­  B   e­  ]   ¨­     ®  !   ®  •   -®  M   Ã®     ¯  1   '¯  2   Y¯    Œ¯  ›  ¨±  í  D´  b  2¶  e  •·  �  û¾  G  }Â  "   ÅÅ     èÅ  4   Æ  .   <Æ  2   kÆ  5   žÆ  3   ÔÆ     Ç  G   Ç  8   `Ç  ,   ™Ç     ÆÇ  (   åÇ     È     È  G   /È     wÈ  3   €È  )   ´È  $   ÞÈ  :   É  ,   >É  V   kÉ      ÂÉ     ãÉ     þÉ  *   Ê     EÊ  8   [Ê     ”Ê  "   £Ê  &   ÆÊ  3   íÊ  -   !Ë  +   OË  ?   {Ë  f   »Ë     "Ì  ,   4Ì  	   aÌ     kÌ     �Ì  *   ™Ì      ÄÌ  H   åÌ     .Í  Ð   5Í  ²   Î  g   ¹Î