cachepc-qemu

Fork of AMDESE/qemu with changes for cachepc side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-qemu
Log | Files | Refs | Submodules | LICENSE | sfeed.txt

entry.S (957B)


      1#define LOAD32(rn, name)    \
      2	lis     rn,name##@h;    \
      3	ori     rn,rn,name##@l
      4
      5#define ENTRY(func_name)    \
      6	.text;                  \
      7	.align  2;              \
      8	.globl  .func_name;     \
      9	.func_name:             \
     10	.globl  func_name;      \
     11	func_name:
     12
     13#define KVMPPC_HCALL_BASE       0xf000
     14#define KVMPPC_H_RTAS           (KVMPPC_HCALL_BASE + 0x0)
     15#define KVMPPC_H_VOF_CLIENT     (KVMPPC_HCALL_BASE + 0x5)
     16
     17	. = 0x100 /* Do exactly as SLOF does */
     18
     19ENTRY(_start)
     20	LOAD32(2, __toc_start)
     21	b entry_c
     22
     23ENTRY(_prom_entry)
     24	LOAD32(2, __toc_start)
     25	stwu    %r1,-112(%r1)
     26	stw     %r31,104(%r1)
     27	mflr    %r31
     28	bl prom_entry
     29	nop
     30	mtlr    %r31
     31	lwz     %r31,104(%r1)
     32	addi    %r1,%r1,112
     33	blr
     34
     35ENTRY(ci_entry)
     36	mr	4,3
     37	LOAD32(3,KVMPPC_H_VOF_CLIENT)
     38	sc	1
     39	blr
     40
     41/* This is the actual RTAS blob copied to the OS at instantiate-rtas */
     42ENTRY(hv_rtas)
     43	mr      %r4,%r3
     44	LOAD32(3,KVMPPC_H_RTAS)
     45	sc	1
     46	blr
     47	.globl hv_rtas_size
     48hv_rtas_size:
     49	.long . - hv_rtas;