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

asm-offsets.c (2567B)


      1// SPDX-License-Identifier: GPL-2.0
      2/*
      3 * This program is used to generate definitions needed by
      4 * assembly language modules.
      5 *
      6 * We use the technique used in the OSF Mach kernel code:
      7 * generate asm statements containing #defines,
      8 * compile this file to assembler, and then extract the
      9 * #defines from the assembly-language output.
     10 */
     11
     12#include <linux/stddef.h>
     13#include <linux/types.h>
     14#include <linux/mm.h>
     15#include <linux/kbuild.h>
     16#include <linux/suspend.h>
     17
     18#include <asm/thread_info.h>
     19#include <asm/suspend.h>
     20
     21int main(void)
     22{
     23	/* offsets into the thread_info struct */
     24	DEFINE(TI_TASK,		offsetof(struct thread_info, task));
     25	DEFINE(TI_FLAGS,	offsetof(struct thread_info, flags));
     26	DEFINE(TI_CPU,		offsetof(struct thread_info, cpu));
     27	DEFINE(TI_PRE_COUNT,	offsetof(struct thread_info, preempt_count));
     28	DEFINE(TI_SIZE,		sizeof(struct thread_info));
     29
     30#ifdef CONFIG_HIBERNATION
     31	DEFINE(PBE_ADDRESS, offsetof(struct pbe, address));
     32	DEFINE(PBE_ORIG_ADDRESS, offsetof(struct pbe, orig_address));
     33	DEFINE(PBE_NEXT, offsetof(struct pbe, next));
     34	DEFINE(SWSUSP_ARCH_REGS_SIZE, sizeof(struct swsusp_arch_regs));
     35#endif
     36
     37	DEFINE(SH_SLEEP_MODE, offsetof(struct sh_sleep_data, mode));
     38	DEFINE(SH_SLEEP_SF_PRE, offsetof(struct sh_sleep_data, sf_pre));
     39	DEFINE(SH_SLEEP_SF_POST, offsetof(struct sh_sleep_data, sf_post));
     40	DEFINE(SH_SLEEP_RESUME, offsetof(struct sh_sleep_data, resume));
     41	DEFINE(SH_SLEEP_VBR, offsetof(struct sh_sleep_data, vbr));
     42	DEFINE(SH_SLEEP_SPC, offsetof(struct sh_sleep_data, spc));
     43	DEFINE(SH_SLEEP_SR, offsetof(struct sh_sleep_data, sr));
     44	DEFINE(SH_SLEEP_SP, offsetof(struct sh_sleep_data, sp));
     45	DEFINE(SH_SLEEP_BASE_ADDR, offsetof(struct sh_sleep_data, addr));
     46	DEFINE(SH_SLEEP_BASE_DATA, offsetof(struct sh_sleep_data, data));
     47	DEFINE(SH_SLEEP_REG_STBCR, offsetof(struct sh_sleep_regs, stbcr));
     48	DEFINE(SH_SLEEP_REG_BAR, offsetof(struct sh_sleep_regs, bar));
     49	DEFINE(SH_SLEEP_REG_PTEH, offsetof(struct sh_sleep_regs, pteh));
     50	DEFINE(SH_SLEEP_REG_PTEL, offsetof(struct sh_sleep_regs, ptel));
     51	DEFINE(SH_SLEEP_REG_TTB, offsetof(struct sh_sleep_regs, ttb));
     52	DEFINE(SH_SLEEP_REG_TEA, offsetof(struct sh_sleep_regs, tea));
     53	DEFINE(SH_SLEEP_REG_MMUCR, offsetof(struct sh_sleep_regs, mmucr));
     54	DEFINE(SH_SLEEP_REG_PTEA, offsetof(struct sh_sleep_regs, ptea));
     55	DEFINE(SH_SLEEP_REG_PASCR, offsetof(struct sh_sleep_regs, pascr));
     56	DEFINE(SH_SLEEP_REG_IRMCR, offsetof(struct sh_sleep_regs, irmcr));
     57	DEFINE(SH_SLEEP_REG_CCR, offsetof(struct sh_sleep_regs, ccr));
     58	DEFINE(SH_SLEEP_REG_RAMCR, offsetof(struct sh_sleep_regs, ramcr));
     59	return 0;
     60}