cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

Memcpy_utils.S (9445B)


      1#ifndef __ASM_MEMCPY_UTILS
      2#define __ASM_MEMCPY_UTILS
      3
      4#include <linux/linkage.h>
      5#include <asm/asi.h>
      6#include <asm/visasm.h>
      7
      8ENTRY(__restore_asi_fp)
      9	VISExitHalf
     10	retl
     11	 wr	%g0, ASI_AIUS, %asi
     12ENDPROC(__restore_asi_fp)
     13
     14ENTRY(__restore_asi)
     15	retl
     16	 wr	%g0, ASI_AIUS, %asi
     17ENDPROC(__restore_asi)
     18
     19ENTRY(memcpy_retl_o2)
     20	ba,pt	%xcc, __restore_asi
     21	 mov	%o2, %o0
     22ENDPROC(memcpy_retl_o2)
     23ENTRY(memcpy_retl_o2_plus_1)
     24	ba,pt	%xcc, __restore_asi
     25	 add	%o2, 1, %o0
     26ENDPROC(memcpy_retl_o2_plus_1)
     27ENTRY(memcpy_retl_o2_plus_3)
     28	ba,pt	%xcc, __restore_asi
     29	 add	%o2, 3, %o0
     30ENDPROC(memcpy_retl_o2_plus_3)
     31ENTRY(memcpy_retl_o2_plus_4)
     32	ba,pt	%xcc, __restore_asi
     33	 add	%o2, 4, %o0
     34ENDPROC(memcpy_retl_o2_plus_4)
     35ENTRY(memcpy_retl_o2_plus_5)
     36	ba,pt	%xcc, __restore_asi
     37	 add	%o2, 5, %o0
     38ENDPROC(memcpy_retl_o2_plus_5)
     39ENTRY(memcpy_retl_o2_plus_6)
     40	ba,pt	%xcc, __restore_asi
     41	 add	%o2, 6, %o0
     42ENDPROC(memcpy_retl_o2_plus_6)
     43ENTRY(memcpy_retl_o2_plus_7)
     44	ba,pt	%xcc, __restore_asi
     45	 add	%o2, 7, %o0
     46ENDPROC(memcpy_retl_o2_plus_7)
     47ENTRY(memcpy_retl_o2_plus_8)
     48	ba,pt	%xcc, __restore_asi
     49	 add	%o2, 8, %o0
     50ENDPROC(memcpy_retl_o2_plus_8)
     51ENTRY(memcpy_retl_o2_plus_15)
     52	ba,pt	%xcc, __restore_asi
     53	 add	%o2, 15, %o0
     54ENDPROC(memcpy_retl_o2_plus_15)
     55ENTRY(memcpy_retl_o2_plus_15_8)
     56	 add	%o2, 15, %o2
     57	ba,pt	%xcc, __restore_asi
     58	 add	%o2, 8, %o0
     59ENDPROC(memcpy_retl_o2_plus_15_8)
     60ENTRY(memcpy_retl_o2_plus_16)
     61	ba,pt	%xcc, __restore_asi
     62	 add	%o2, 16, %o0
     63ENDPROC(memcpy_retl_o2_plus_16)
     64ENTRY(memcpy_retl_o2_plus_24)
     65	ba,pt	%xcc, __restore_asi
     66	 add	%o2, 24, %o0
     67ENDPROC(memcpy_retl_o2_plus_24)
     68ENTRY(memcpy_retl_o2_plus_31)
     69	ba,pt	%xcc, __restore_asi
     70	 add	%o2, 31, %o0
     71ENDPROC(memcpy_retl_o2_plus_31)
     72ENTRY(memcpy_retl_o2_plus_32)
     73	ba,pt	%xcc, __restore_asi
     74	 add	%o2, 32, %o0
     75ENDPROC(memcpy_retl_o2_plus_32)
     76ENTRY(memcpy_retl_o2_plus_31_32)
     77	add	%o2, 31, %o2
     78	ba,pt	%xcc, __restore_asi
     79	 add	%o2, 32, %o0
     80ENDPROC(memcpy_retl_o2_plus_31_32)
     81ENTRY(memcpy_retl_o2_plus_31_24)
     82	add	%o2, 31, %o2
     83	ba,pt	%xcc, __restore_asi
     84	 add	%o2, 24, %o0
     85ENDPROC(memcpy_retl_o2_plus_31_24)
     86ENTRY(memcpy_retl_o2_plus_31_16)
     87	add	%o2, 31, %o2
     88	ba,pt	%xcc, __restore_asi
     89	 add	%o2, 16, %o0
     90ENDPROC(memcpy_retl_o2_plus_31_16)
     91ENTRY(memcpy_retl_o2_plus_31_8)
     92	add	%o2, 31, %o2
     93	ba,pt	%xcc, __restore_asi
     94	 add	%o2, 8, %o0
     95ENDPROC(memcpy_retl_o2_plus_31_8)
     96ENTRY(memcpy_retl_o2_plus_63)
     97	ba,pt	%xcc, __restore_asi
     98	 add	%o2, 63, %o0
     99ENDPROC(memcpy_retl_o2_plus_63)
    100ENTRY(memcpy_retl_o2_plus_63_64)
    101	 add	%o2, 63, %o2
    102	ba,pt	%xcc, __restore_asi
    103	 add	%o2, 64, %o0
    104ENDPROC(memcpy_retl_o2_plus_63_64)
    105ENTRY(memcpy_retl_o2_plus_63_56)
    106	 add	%o2, 63, %o2
    107	ba,pt	%xcc, __restore_asi
    108	 add	%o2, 56, %o0
    109ENDPROC(memcpy_retl_o2_plus_63_56)
    110ENTRY(memcpy_retl_o2_plus_63_48)
    111	 add	%o2, 63, %o2
    112	ba,pt	%xcc, __restore_asi
    113	 add	%o2, 48, %o0
    114ENDPROC(memcpy_retl_o2_plus_63_48)
    115ENTRY(memcpy_retl_o2_plus_63_40)
    116	 add	%o2, 63, %o2
    117	ba,pt	%xcc, __restore_asi
    118	 add	%o2, 40, %o0
    119ENDPROC(memcpy_retl_o2_plus_63_40)
    120ENTRY(memcpy_retl_o2_plus_63_32)
    121	 add	%o2, 63, %o2
    122	ba,pt	%xcc, __restore_asi
    123	 add	%o2, 32, %o0
    124ENDPROC(memcpy_retl_o2_plus_63_32)
    125ENTRY(memcpy_retl_o2_plus_63_24)
    126	 add	%o2, 63, %o2
    127	ba,pt	%xcc, __restore_asi
    128	 add	%o2, 24, %o0
    129ENDPROC(memcpy_retl_o2_plus_63_24)
    130ENTRY(memcpy_retl_o2_plus_63_16)
    131	 add	%o2, 63, %o2
    132	ba,pt	%xcc, __restore_asi
    133	 add	%o2, 16, %o0
    134ENDPROC(memcpy_retl_o2_plus_63_16)
    135ENTRY(memcpy_retl_o2_plus_63_8)
    136	 add	%o2, 63, %o2
    137	ba,pt	%xcc, __restore_asi
    138	 add	%o2, 8, %o0
    139ENDPROC(memcpy_retl_o2_plus_63_8)
    140ENTRY(memcpy_retl_o2_plus_o5)
    141	ba,pt	%xcc, __restore_asi
    142	 add	%o2, %o5, %o0
    143ENDPROC(memcpy_retl_o2_plus_o5)
    144ENTRY(memcpy_retl_o2_plus_o5_plus_1)
    145	add	%o5, 1, %o5
    146	ba,pt	%xcc, __restore_asi
    147	 add	%o2, %o5, %o0
    148ENDPROC(memcpy_retl_o2_plus_o5_plus_1)
    149ENTRY(memcpy_retl_o2_plus_o5_plus_4)
    150	add	%o5, 4, %o5
    151	ba,pt	%xcc, __restore_asi
    152	 add	%o2, %o5, %o0
    153ENDPROC(memcpy_retl_o2_plus_o5_plus_4)
    154ENTRY(memcpy_retl_o2_plus_o5_plus_8)
    155	add	%o5, 8, %o5
    156	ba,pt	%xcc, __restore_asi
    157	 add	%o2, %o5, %o0
    158ENDPROC(memcpy_retl_o2_plus_o5_plus_8)
    159ENTRY(memcpy_retl_o2_plus_o5_plus_16)
    160	add	%o5, 16, %o5
    161	ba,pt	%xcc, __restore_asi
    162	 add	%o2, %o5, %o0
    163ENDPROC(memcpy_retl_o2_plus_o5_plus_16)
    164ENTRY(memcpy_retl_o2_plus_o5_plus_24)
    165	add	%o5, 24, %o5
    166	ba,pt	%xcc, __restore_asi
    167	 add	%o2, %o5, %o0
    168ENDPROC(memcpy_retl_o2_plus_o5_plus_24)
    169ENTRY(memcpy_retl_o2_plus_o5_plus_32)
    170	add	%o5, 32, %o5
    171	ba,pt	%xcc, __restore_asi
    172	 add	%o2, %o5, %o0
    173ENDPROC(memcpy_retl_o2_plus_o5_plus_32)
    174ENTRY(memcpy_retl_o2_plus_o5_64)
    175	add	%o5, 32, %o5
    176	ba,pt	%xcc, __restore_asi
    177	 add	%o2, %o5, %o0
    178ENDPROC(memcpy_retl_o2_plus_o5_64)
    179ENTRY(memcpy_retl_o2_plus_g1)
    180	ba,pt	%xcc, __restore_asi
    181	 add	%o2, %g1, %o0
    182ENDPROC(memcpy_retl_o2_plus_g1)
    183ENTRY(memcpy_retl_o2_plus_g1_plus_1)
    184	add	%g1, 1, %g1
    185	ba,pt	%xcc, __restore_asi
    186	 add	%o2, %g1, %o0
    187ENDPROC(memcpy_retl_o2_plus_g1_plus_1)
    188ENTRY(memcpy_retl_o2_plus_g1_plus_8)
    189	add	%g1, 8, %g1
    190	ba,pt	%xcc, __restore_asi
    191	 add	%o2, %g1, %o0
    192ENDPROC(memcpy_retl_o2_plus_g1_plus_8)
    193ENTRY(memcpy_retl_o2_plus_o4)
    194	ba,pt	%xcc, __restore_asi
    195	 add	%o2, %o4, %o0
    196ENDPROC(memcpy_retl_o2_plus_o4)
    197ENTRY(memcpy_retl_o2_plus_o4_plus_8)
    198	add	%o4, 8, %o4
    199	ba,pt	%xcc, __restore_asi
    200	 add	%o2, %o4, %o0
    201ENDPROC(memcpy_retl_o2_plus_o4_plus_8)
    202ENTRY(memcpy_retl_o2_plus_o4_plus_16)
    203	add	%o4, 16, %o4
    204	ba,pt	%xcc, __restore_asi
    205	 add	%o2, %o4, %o0
    206ENDPROC(memcpy_retl_o2_plus_o4_plus_16)
    207ENTRY(memcpy_retl_o2_plus_o4_plus_24)
    208	add	%o4, 24, %o4
    209	ba,pt	%xcc, __restore_asi
    210	 add	%o2, %o4, %o0
    211ENDPROC(memcpy_retl_o2_plus_o4_plus_24)
    212ENTRY(memcpy_retl_o2_plus_o4_plus_32)
    213	add	%o4, 32, %o4
    214	ba,pt	%xcc, __restore_asi
    215	 add	%o2, %o4, %o0
    216ENDPROC(memcpy_retl_o2_plus_o4_plus_32)
    217ENTRY(memcpy_retl_o2_plus_o4_plus_40)
    218	add	%o4, 40, %o4
    219	ba,pt	%xcc, __restore_asi
    220	 add	%o2, %o4, %o0
    221ENDPROC(memcpy_retl_o2_plus_o4_plus_40)
    222ENTRY(memcpy_retl_o2_plus_o4_plus_48)
    223	add	%o4, 48, %o4
    224	ba,pt	%xcc, __restore_asi
    225	 add	%o2, %o4, %o0
    226ENDPROC(memcpy_retl_o2_plus_o4_plus_48)
    227ENTRY(memcpy_retl_o2_plus_o4_plus_56)
    228	add	%o4, 56, %o4
    229	ba,pt	%xcc, __restore_asi
    230	 add	%o2, %o4, %o0
    231ENDPROC(memcpy_retl_o2_plus_o4_plus_56)
    232ENTRY(memcpy_retl_o2_plus_o4_plus_64)
    233	add	%o4, 64, %o4
    234	ba,pt	%xcc, __restore_asi
    235	 add	%o2, %o4, %o0
    236ENDPROC(memcpy_retl_o2_plus_o4_plus_64)
    237ENTRY(memcpy_retl_o2_plus_o5_plus_64)
    238	add	%o5, 64, %o5
    239	ba,pt	%xcc, __restore_asi
    240	 add	%o2, %o5, %o0
    241ENDPROC(memcpy_retl_o2_plus_o5_plus_64)
    242ENTRY(memcpy_retl_o2_plus_o3_fp)
    243	ba,pt	%xcc, __restore_asi_fp
    244	 add	%o2, %o3, %o0
    245ENDPROC(memcpy_retl_o2_plus_o3_fp)
    246ENTRY(memcpy_retl_o2_plus_o3_plus_1_fp)
    247	add	%o3, 1, %o3
    248	ba,pt	%xcc, __restore_asi_fp
    249	 add	%o2, %o3, %o0
    250ENDPROC(memcpy_retl_o2_plus_o3_plus_1_fp)
    251ENTRY(memcpy_retl_o2_plus_o3_plus_4_fp)
    252	add	%o3, 4, %o3
    253	ba,pt	%xcc, __restore_asi_fp
    254	 add	%o2, %o3, %o0
    255ENDPROC(memcpy_retl_o2_plus_o3_plus_4_fp)
    256ENTRY(memcpy_retl_o2_plus_o4_fp)
    257	ba,pt	%xcc, __restore_asi_fp
    258	 add	%o2, %o4, %o0
    259ENDPROC(memcpy_retl_o2_plus_o4_fp)
    260ENTRY(memcpy_retl_o2_plus_o4_plus_8_fp)
    261	add	%o4, 8, %o4
    262	ba,pt	%xcc, __restore_asi_fp
    263	 add	%o2, %o4, %o0
    264ENDPROC(memcpy_retl_o2_plus_o4_plus_8_fp)
    265ENTRY(memcpy_retl_o2_plus_o4_plus_16_fp)
    266	add	%o4, 16, %o4
    267	ba,pt	%xcc, __restore_asi_fp
    268	 add	%o2, %o4, %o0
    269ENDPROC(memcpy_retl_o2_plus_o4_plus_16_fp)
    270ENTRY(memcpy_retl_o2_plus_o4_plus_24_fp)
    271	add	%o4, 24, %o4
    272	ba,pt	%xcc, __restore_asi_fp
    273	 add	%o2, %o4, %o0
    274ENDPROC(memcpy_retl_o2_plus_o4_plus_24_fp)
    275ENTRY(memcpy_retl_o2_plus_o4_plus_32_fp)
    276	add	%o4, 32, %o4
    277	ba,pt	%xcc, __restore_asi_fp
    278	 add	%o2, %o4, %o0
    279ENDPROC(memcpy_retl_o2_plus_o4_plus_32_fp)
    280ENTRY(memcpy_retl_o2_plus_o4_plus_40_fp)
    281	add	%o4, 40, %o4
    282	ba,pt	%xcc, __restore_asi_fp
    283	 add	%o2, %o4, %o0
    284ENDPROC(memcpy_retl_o2_plus_o4_plus_40_fp)
    285ENTRY(memcpy_retl_o2_plus_o4_plus_48_fp)
    286	add	%o4, 48, %o4
    287	ba,pt	%xcc, __restore_asi_fp
    288	 add	%o2, %o4, %o0
    289ENDPROC(memcpy_retl_o2_plus_o4_plus_48_fp)
    290ENTRY(memcpy_retl_o2_plus_o4_plus_56_fp)
    291	add	%o4, 56, %o4
    292	ba,pt	%xcc, __restore_asi_fp
    293	 add	%o2, %o4, %o0
    294ENDPROC(memcpy_retl_o2_plus_o4_plus_56_fp)
    295ENTRY(memcpy_retl_o2_plus_o4_plus_64_fp)
    296	add	%o4, 64, %o4
    297	ba,pt	%xcc, __restore_asi_fp
    298	 add	%o2, %o4, %o0
    299ENDPROC(memcpy_retl_o2_plus_o4_plus_64_fp)
    300ENTRY(memcpy_retl_o2_plus_o5_fp)
    301	ba,pt	%xcc, __restore_asi_fp
    302	 add	%o2, %o5, %o0
    303ENDPROC(memcpy_retl_o2_plus_o5_fp)
    304ENTRY(memcpy_retl_o2_plus_o5_plus_64_fp)
    305	add	%o5, 64, %o5
    306	ba,pt	%xcc, __restore_asi_fp
    307	 add	%o2, %o5, %o0
    308ENDPROC(memcpy_retl_o2_plus_o5_plus_64_fp)
    309ENTRY(memcpy_retl_o2_plus_o5_plus_56_fp)
    310	add	%o5, 56, %o5
    311	ba,pt	%xcc, __restore_asi_fp
    312	 add	%o2, %o5, %o0
    313ENDPROC(memcpy_retl_o2_plus_o5_plus_56_fp)
    314ENTRY(memcpy_retl_o2_plus_o5_plus_48_fp)
    315	add	%o5, 48, %o5
    316	ba,pt	%xcc, __restore_asi_fp
    317	 add	%o2, %o5, %o0
    318ENDPROC(memcpy_retl_o2_plus_o5_plus_48_fp)
    319ENTRY(memcpy_retl_o2_plus_o5_plus_40_fp)
    320	add	%o5, 40, %o5
    321	ba,pt	%xcc, __restore_asi_fp
    322	 add	%o2, %o5, %o0
    323ENDPROC(memcpy_retl_o2_plus_o5_plus_40_fp)
    324ENTRY(memcpy_retl_o2_plus_o5_plus_32_fp)
    325	add	%o5, 32, %o5
    326	ba,pt	%xcc, __restore_asi_fp
    327	 add	%o2, %o5, %o0
    328ENDPROC(memcpy_retl_o2_plus_o5_plus_32_fp)
    329ENTRY(memcpy_retl_o2_plus_o5_plus_24_fp)
    330	add	%o5, 24, %o5
    331	ba,pt	%xcc, __restore_asi_fp
    332	 add	%o2, %o5, %o0
    333ENDPROC(memcpy_retl_o2_plus_o5_plus_24_fp)
    334ENTRY(memcpy_retl_o2_plus_o5_plus_16_fp)
    335	add	%o5, 16, %o5
    336	ba,pt	%xcc, __restore_asi_fp
    337	 add	%o2, %o5, %o0
    338ENDPROC(memcpy_retl_o2_plus_o5_plus_16_fp)
    339ENTRY(memcpy_retl_o2_plus_o5_plus_8_fp)
    340	add	%o5, 8, %o5
    341	ba,pt	%xcc, __restore_asi_fp
    342	 add	%o2, %o5, %o0
    343ENDPROC(memcpy_retl_o2_plus_o5_plus_8_fp)
    344
    345#endif