| /linux/drivers/gpu/drm/xe/ |
| H A D | xe_guc_pc.c | 95 static struct xe_guc *pc_to_guc(struct xe_guc_pc *pc) in pc_to_guc() argument 97 return container_of(pc, struct xe_guc, pc); in pc_to_guc() 100 static struct xe_guc_ct *pc_to_ct(struct xe_guc_pc *pc) in pc_to_ct() argument 102 return &pc_to_guc(pc)->ct; in pc_to_ct() 105 static struct xe_gt *pc_to_gt(struct xe_guc_pc *pc) in pc_to_gt() argument 107 return guc_to_gt(pc_to_guc(pc)); in pc_to_gt() 110 static struct xe_device *pc_to_xe(struct xe_guc_pc *pc) in pc_to_xe() argument 112 return guc_to_xe(pc_to_guc(pc)); in pc_to_xe() 115 static struct iosys_map *pc_to_maps(struct xe_guc_pc *pc) in pc_to_maps() argument 117 return &pc->bo->vmap; in pc_to_maps() [all …]
|
| H A D | xe_guc_pc.h | 15 int xe_guc_pc_init(struct xe_guc_pc *pc); 16 int xe_guc_pc_start(struct xe_guc_pc *pc); 17 int xe_guc_pc_stop(struct xe_guc_pc *pc); 18 int xe_guc_pc_gucrc_disable(struct xe_guc_pc *pc); 19 int xe_guc_pc_override_gucrc_mode(struct xe_guc_pc *pc, enum slpc_gucrc_mode mode); 20 int xe_guc_pc_unset_gucrc_mode(struct xe_guc_pc *pc); 21 void xe_guc_pc_print(struct xe_guc_pc *pc, struct drm_printer *p); 23 u32 xe_guc_pc_get_act_freq(struct xe_guc_pc *pc); 24 int xe_guc_pc_get_cur_freq(struct xe_guc_pc *pc, u32 *freq); 25 u32 xe_guc_pc_get_cur_freq_fw(struct xe_guc_pc *pc); [all …]
|
| /linux/drivers/pinctrl/meson/ |
| H A D | pinctrl-meson.c | 72 static int meson_get_bank(struct meson_pinctrl *pc, unsigned int pin, in meson_get_bank() argument 77 for (i = 0; i < pc->data->num_banks; i++) { in meson_get_bank() 78 if (pin >= pc->data->banks[i].first && in meson_get_bank() 79 pin <= pc->data->banks[i].last) { in meson_get_bank() 80 *bank = &pc->data->banks[i]; in meson_get_bank() 111 struct meson_pinctrl *pc = pinctrl_dev_get_drvdata(pcdev); in meson_get_groups_count() local 113 return pc->data->num_groups; in meson_get_groups_count() 119 struct meson_pinctrl *pc = pinctrl_dev_get_drvdata(pcdev); in meson_get_group_name() local 121 return pc->data->groups[selector].name; in meson_get_group_name() 127 struct meson_pinctrl *pc = pinctrl_dev_get_drvdata(pcdev); in meson_get_group_pins() local [all …]
|
| /linux/drivers/bcma/ |
| H A D | driver_pci.c | 20 u32 bcma_pcie_read(struct bcma_drv_pci *pc, u32 address) in bcma_pcie_read() argument 22 pcicore_write32(pc, BCMA_CORE_PCI_PCIEIND_ADDR, address); in bcma_pcie_read() 23 pcicore_read32(pc, BCMA_CORE_PCI_PCIEIND_ADDR); in bcma_pcie_read() 24 return pcicore_read32(pc, BCMA_CORE_PCI_PCIEIND_DATA); in bcma_pcie_read() 27 static void bcma_pcie_write(struct bcma_drv_pci *pc, u32 address, u32 data) in bcma_pcie_write() argument 29 pcicore_write32(pc, BCMA_CORE_PCI_PCIEIND_ADDR, address); in bcma_pcie_write() 30 pcicore_read32(pc, BCMA_CORE_PCI_PCIEIND_ADDR); in bcma_pcie_write() 31 pcicore_write32(pc, BCMA_CORE_PCI_PCIEIND_DATA, data); in bcma_pcie_write() 34 static void bcma_pcie_mdio_set_phy(struct bcma_drv_pci *pc, u16 phy) in bcma_pcie_mdio_set_phy() argument 47 pcicore_write32(pc, BCMA_CORE_PCI_MDIO_DATA, v); in bcma_pcie_mdio_set_phy() [all …]
|
| H A D | driver_pci_host.c | 28 bool bcma_core_pci_is_in_hostmode(struct bcma_drv_pci *pc) in bcma_core_pci_is_in_hostmode() argument 30 struct bcma_bus *bus = pc->core->bus; in bcma_core_pci_is_in_hostmode() 39 bcma_core_enable(pc->core, 0); in bcma_core_pci_is_in_hostmode() 41 return !mips_busprobe32(tmp, pc->core->io_addr); in bcma_core_pci_is_in_hostmode() 44 static u32 bcma_pcie_read_config(struct bcma_drv_pci *pc, u32 address) in bcma_pcie_read_config() argument 46 pcicore_write32(pc, BCMA_CORE_PCI_CONFIG_ADDR, address); in bcma_pcie_read_config() 47 pcicore_read32(pc, BCMA_CORE_PCI_CONFIG_ADDR); in bcma_pcie_read_config() 48 return pcicore_read32(pc, BCMA_CORE_PCI_CONFIG_DATA); in bcma_pcie_read_config() 51 static void bcma_pcie_write_config(struct bcma_drv_pci *pc, u32 address, in bcma_pcie_write_config() argument 54 pcicore_write32(pc, BCMA_CORE_PCI_CONFIG_ADDR, address); in bcma_pcie_write_config() [all …]
|
| /linux/drivers/pinctrl/bcm/ |
| H A D | pinctrl-brcmstb.c | 54 static unsigned int brcmstb_pinctrl_fsel_get(struct brcmstb_pinctrl *pc, in brcmstb_pinctrl_fsel_get() argument 57 u32 bit = pc->pin_regs[pin].mux_bit; in brcmstb_pinctrl_fsel_get() 63 return pc->func_gpio; in brcmstb_pinctrl_fsel_get() 67 val = readl(pc->base + BIT_TO_REG(bit)); in brcmstb_pinctrl_fsel_get() 68 fsel = (val >> BIT_TO_SHIFT(bit)) & pc->pin_funcs[pin].func_mask; in brcmstb_pinctrl_fsel_get() 69 func = pc->pin_funcs[pin].funcs[fsel]; in brcmstb_pinctrl_fsel_get() 71 if (func >= pc->func_count) in brcmstb_pinctrl_fsel_get() 74 dev_dbg(pc->dev, "get %04x: %08x (%u => %s)\n", in brcmstb_pinctrl_fsel_get() 76 pc->func_names[func]); in brcmstb_pinctrl_fsel_get() 81 static int brcmstb_pinctrl_fsel_set(struct brcmstb_pinctrl *pc, in brcmstb_pinctrl_fsel_set() argument [all …]
|
| H A D | pinctrl-bcm2835.c | 252 static inline u32 bcm2835_gpio_rd(struct bcm2835_pinctrl *pc, unsigned reg) in bcm2835_gpio_rd() argument 254 return readl(pc->base + reg); in bcm2835_gpio_rd() 257 static inline void bcm2835_gpio_wr(struct bcm2835_pinctrl *pc, unsigned reg, in bcm2835_gpio_wr() argument 260 writel(val, pc->base + reg); in bcm2835_gpio_wr() 263 static inline int bcm2835_gpio_get_bit(struct bcm2835_pinctrl *pc, unsigned reg, in bcm2835_gpio_get_bit() argument 267 return (bcm2835_gpio_rd(pc, reg) >> GPIO_REG_SHIFT(bit)) & 1; in bcm2835_gpio_get_bit() 271 static inline void bcm2835_gpio_set_bit(struct bcm2835_pinctrl *pc, in bcm2835_gpio_set_bit() argument 275 bcm2835_gpio_wr(pc, reg, BIT(GPIO_REG_SHIFT(bit))); in bcm2835_gpio_set_bit() 279 struct bcm2835_pinctrl *pc, unsigned pin) in bcm2835_pinctrl_fsel_get() argument 281 u32 val = bcm2835_gpio_rd(pc, FSEL_REG(pin)); in bcm2835_pinctrl_fsel_get() [all …]
|
| H A D | pinctrl-bcm63xx.c | 47 struct bcm63xx_pinctrl *pc) in bcm63xx_gpio_probe() argument 55 grc.regmap = pc->regs; in bcm63xx_gpio_probe() 69 struct bcm63xx_pinctrl *pc; in bcm63xx_pinctrl_probe() local 72 pc = devm_kzalloc(dev, sizeof(*pc), GFP_KERNEL); in bcm63xx_pinctrl_probe() 73 if (!pc) in bcm63xx_pinctrl_probe() 76 platform_set_drvdata(pdev, pc); in bcm63xx_pinctrl_probe() 78 pc->dev = dev; in bcm63xx_pinctrl_probe() 79 pc->driver_data = driver_data; in bcm63xx_pinctrl_probe() 81 pc->regs = syscon_node_to_regmap(dev->parent->of_node); in bcm63xx_pinctrl_probe() 82 if (IS_ERR(pc->regs)) in bcm63xx_pinctrl_probe() [all …]
|
| /linux/drivers/pwm/ |
| H A D | pwm-sti.c | 116 static int sti_pwm_get_prescale(struct sti_pwm_chip *pc, unsigned long period, in sti_pwm_get_prescale() argument 123 clk_rate = clk_get_rate(pc->pwm_clk); in sti_pwm_get_prescale() 125 dev_err(pc->dev, "failed to get clock rate\n"); in sti_pwm_get_prescale() 133 value *= pc->max_pwm_cnt + 1; in sti_pwm_get_prescale() 139 if (ps > pc->max_prescale) in sti_pwm_get_prescale() 159 struct sti_pwm_chip *pc = to_sti_pwmchip(chip); in sti_pwm_config() local 161 struct pwm_device *cur = pc->cur; in sti_pwm_config() 162 struct device *dev = pc->dev; in sti_pwm_config() 166 ncfg = hweight_long(pc->configured); in sti_pwm_config() 187 ret = clk_enable(pc->pwm_clk); in sti_pwm_config() [all …]
|
| H A D | pwm-rockchip.c | 65 struct rockchip_pwm_chip *pc = to_rockchip_pwm_chip(chip); in rockchip_pwm_get_state() local 66 u64 prescaled_ns = (u64)pc->data->prescaler * NSEC_PER_SEC; in rockchip_pwm_get_state() 67 u32 enable_conf = pc->data->enable_conf; in rockchip_pwm_get_state() 73 ret = clk_enable(pc->pclk); in rockchip_pwm_get_state() 77 ret = clk_enable(pc->clk); in rockchip_pwm_get_state() 81 clk_rate = clk_get_rate(pc->clk); in rockchip_pwm_get_state() 83 tmp = readl_relaxed(pc->base + pc->data->regs.period); in rockchip_pwm_get_state() 87 tmp = readl_relaxed(pc->base + pc->data->regs.duty); in rockchip_pwm_get_state() 91 val = readl_relaxed(pc->base + pc->data->regs.ctrl); in rockchip_pwm_get_state() 94 if (pc->data->supports_polarity && !(val & PWM_DUTY_POSITIVE)) in rockchip_pwm_get_state() [all …]
|
| H A D | pwm-mediatek.c | 72 static int pwm_mediatek_clk_enable(struct pwm_mediatek_chip *pc, in pwm_mediatek_clk_enable() argument 77 ret = clk_prepare_enable(pc->clk_top); in pwm_mediatek_clk_enable() 81 ret = clk_prepare_enable(pc->clk_main); in pwm_mediatek_clk_enable() 85 ret = clk_prepare_enable(pc->clk_pwms[hwpwm].clk); in pwm_mediatek_clk_enable() 89 if (!pc->clk_pwms[hwpwm].rate) { in pwm_mediatek_clk_enable() 90 pc->clk_pwms[hwpwm].rate = clk_get_rate(pc->clk_pwms[hwpwm].clk); in pwm_mediatek_clk_enable() 96 if (!pc->clk_pwms[hwpwm].rate || in pwm_mediatek_clk_enable() 97 pc->clk_pwms[hwpwm].rate > 1000000000) { in pwm_mediatek_clk_enable() 106 clk_disable_unprepare(pc->clk_pwms[hwpwm].clk); in pwm_mediatek_clk_enable() 108 clk_disable_unprepare(pc->clk_main); in pwm_mediatek_clk_enable() [all …]
|
| H A D | pwm-tiehrpwm.c | 182 struct ehrpwm_pwm_chip *pc = to_ehrpwm_pwm_chip(chip); in ehrpwm_pwm_config() local 193 c = pc->clk_rate; in ehrpwm_pwm_config() 198 c = pc->clk_rate; in ehrpwm_pwm_config() 208 if (pc->period_cycles[i] && in ehrpwm_pwm_config() 209 (pc->period_cycles[i] != period_cycles)) { in ehrpwm_pwm_config() 224 pc->period_cycles[pwm->hwpwm] = period_cycles; in ehrpwm_pwm_config() 243 ehrpwm_modify(pc->mmio_base, TBCTL, TBCTL_CLKDIV_MASK, tb_divval); in ehrpwm_pwm_config() 279 ehrpwm_modify(pc->mmio_base, aqctl_reg, aqctl_mask, aqctl_val); in ehrpwm_pwm_config() 282 ehrpwm_modify(pc->mmio_base, TBCTL, TBCTL_PRDLD_MASK, TBCTL_PRDLD_SHDW); in ehrpwm_pwm_config() 284 ehrpwm_write(pc->mmio_base, TBPRD, period_cycles - 1); in ehrpwm_pwm_config() [all …]
|
| H A D | pwm-tegra.c | 84 static inline u32 pwm_readl(struct tegra_pwm_chip *pc, unsigned int offset) in pwm_readl() argument 86 return readl(pc->regs + (offset << 4)); in pwm_readl() 89 static inline void pwm_writel(struct tegra_pwm_chip *pc, unsigned int offset, u32 value) in pwm_writel() argument 91 writel(value, pc->regs + (offset << 4)); in pwm_writel() 97 struct tegra_pwm_chip *pc = to_tegra_pwm_chip(chip); in tegra_pwm_config() local 116 if (period_ns < pc->min_period_ns) in tegra_pwm_config() 132 if (pc->soc->num_channels == 1) { in tegra_pwm_config() 147 if (required_clk_rate > clk_round_rate(pc->clk, required_clk_rate)) in tegra_pwm_config() 163 pc->clk_rate = clk_get_rate(pc->clk); in tegra_pwm_config() 167 rate = mul_u64_u64_div_u64(pc->clk_rate, period_ns, in tegra_pwm_config() [all …]
|
| H A D | pwm-tiecap.c | 56 struct ecap_pwm_chip *pc = to_ecap_pwm_chip(chip); in ecap_pwm_config() local 61 c = pc->clk_rate; in ecap_pwm_config() 70 c = pc->clk_rate; in ecap_pwm_config() 78 value = readw(pc->mmio_base + ECCTL2); in ecap_pwm_config() 83 writew(value, pc->mmio_base + ECCTL2); in ecap_pwm_config() 87 writel(duty_cycles, pc->mmio_base + CAP2); in ecap_pwm_config() 88 writel(period_cycles, pc->mmio_base + CAP1); in ecap_pwm_config() 95 writel(duty_cycles, pc->mmio_base + CAP4); in ecap_pwm_config() 96 writel(period_cycles, pc->mmio_base + CAP3); in ecap_pwm_config() 100 value = readw(pc->mmio_base + ECCTL2); in ecap_pwm_config() [all …]
|
| H A D | pwm-bcm2835.c | 39 struct bcm2835_pwm *pc = to_bcm2835_pwm(chip); in bcm2835_pwm_request() local 42 value = readl(pc->base + PWM_CONTROL); in bcm2835_pwm_request() 45 writel(value, pc->base + PWM_CONTROL); in bcm2835_pwm_request() 52 struct bcm2835_pwm *pc = to_bcm2835_pwm(chip); in bcm2835_pwm_free() local 55 value = readl(pc->base + PWM_CONTROL); in bcm2835_pwm_free() 57 writel(value, pc->base + PWM_CONTROL); in bcm2835_pwm_free() 64 struct bcm2835_pwm *pc = to_bcm2835_pwm(chip); in bcm2835_pwm_apply() local 84 max_period = DIV_ROUND_UP_ULL((u64)U32_MAX * NSEC_PER_SEC + NSEC_PER_SEC / 2, pc->rate) - 1; in bcm2835_pwm_apply() 90 period_cycles = DIV_ROUND_CLOSEST_ULL(state->period * pc->rate, NSEC_PER_SEC); in bcm2835_pwm_apply() 96 writel(period_cycles, pc->base + PERIOD(pwm->hwpwm)); in bcm2835_pwm_apply() [all …]
|
| H A D | pwm-spear.c | 78 struct spear_pwm_chip *pc = to_spear_pwm_chip(chip); in spear_pwm_config() local 93 clk_rate = clk_get_rate(pc->clk); in spear_pwm_config() 122 ret = clk_enable(pc->clk); in spear_pwm_config() 126 spear_pwm_writel(pc, pwm->hwpwm, PWMCR, in spear_pwm_config() 128 spear_pwm_writel(pc, pwm->hwpwm, PWMDCR, dc); in spear_pwm_config() 129 spear_pwm_writel(pc, pwm->hwpwm, PWMPCR, pv); in spear_pwm_config() 130 clk_disable(pc->clk); in spear_pwm_config() 137 struct spear_pwm_chip *pc = to_spear_pwm_chip(chip); in spear_pwm_enable() local 141 rc = clk_enable(pc->clk); in spear_pwm_enable() 145 val = spear_pwm_readl(pc, pwm->hwpwm, PWMCR); in spear_pwm_enable() [all …]
|
| /linux/drivers/ssb/ |
| H A D | driver_pcicore.c | 19 static u32 ssb_pcie_read(struct ssb_pcicore *pc, u32 address); 20 static void ssb_pcie_write(struct ssb_pcicore *pc, u32 address, u32 data); 21 static u16 ssb_pcie_mdio_read(struct ssb_pcicore *pc, u8 device, u8 address); 22 static void ssb_pcie_mdio_write(struct ssb_pcicore *pc, u8 device, 26 u32 pcicore_read32(struct ssb_pcicore *pc, u16 offset) in pcicore_read32() argument 28 return ssb_read32(pc->dev, offset); in pcicore_read32() 32 void pcicore_write32(struct ssb_pcicore *pc, u16 offset, u32 value) in pcicore_write32() argument 34 ssb_write32(pc->dev, offset, value); in pcicore_write32() 38 u16 pcicore_read16(struct ssb_pcicore *pc, u16 offset) in pcicore_read16() argument 40 return ssb_read16(pc->dev, offset); in pcicore_read16() [all …]
|
| /linux/drivers/gpu/drm/bridge/imx/ |
| H A D | imx8qxp-pixel-combiner.c | 64 struct imx8qxp_pc *pc; member 75 static inline u32 imx8qxp_pc_read(struct imx8qxp_pc *pc, unsigned int offset) in imx8qxp_pc_read() argument 77 return readl(pc->base + offset); in imx8qxp_pc_read() 81 imx8qxp_pc_write(struct imx8qxp_pc *pc, unsigned int offset, u32 value) in imx8qxp_pc_write() argument 83 writel(value, pc->base + offset); in imx8qxp_pc_write() 87 imx8qxp_pc_write_set(struct imx8qxp_pc *pc, unsigned int offset, u32 value) in imx8qxp_pc_write_set() argument 89 imx8qxp_pc_write(pc, offset + PC_REG_SET, value); in imx8qxp_pc_write_set() 93 imx8qxp_pc_write_clr(struct imx8qxp_pc *pc, unsigned int offset, u32 value) in imx8qxp_pc_write_clr() argument 95 imx8qxp_pc_write(pc, offset + PC_REG_CLR, value); in imx8qxp_pc_write_clr() 114 struct imx8qxp_pc *pc = ch->pc; in imx8qxp_pc_bridge_attach() local [all …]
|
| /linux/arch/microblaze/kernel/ |
| H A D | unwind.c | 77 static unsigned long *find_frame_creation(unsigned long *pc) in find_frame_creation() argument 86 for (i = 0; i < 1000; i++, pc--) { in find_frame_creation() 90 if (!kernel_text_address((unsigned long) pc)) in find_frame_creation() 93 instr = *pc; in find_frame_creation() 102 frame_size, pc); in find_frame_creation() 106 pr_debug(" Found frame creation at 0x%p, size %d\n", pc, in find_frame_creation() 108 return pc; in find_frame_creation() 125 static int lookup_prev_stack_frame(unsigned long fp, unsigned long pc, in lookup_prev_stack_frame() argument 133 if (pc != (unsigned long) &_switch_to) in lookup_prev_stack_frame() 134 prologue = find_frame_creation((unsigned long *)pc); in lookup_prev_stack_frame() [all …]
|
| /linux/drivers/dma/mediatek/ |
| H A D | mtk-cqdma.c | 123 struct mtk_cqdma_pchan *pc; member 145 struct mtk_cqdma_pchan **pc; member 168 static u32 mtk_dma_read(struct mtk_cqdma_pchan *pc, u32 reg) in mtk_dma_read() argument 170 return readl(pc->base + reg); in mtk_dma_read() 173 static void mtk_dma_write(struct mtk_cqdma_pchan *pc, u32 reg, u32 val) in mtk_dma_write() argument 175 writel_relaxed(val, pc->base + reg); in mtk_dma_write() 178 static void mtk_dma_rmw(struct mtk_cqdma_pchan *pc, u32 reg, in mtk_dma_rmw() argument 183 val = mtk_dma_read(pc, reg); in mtk_dma_rmw() 186 mtk_dma_write(pc, reg, val); in mtk_dma_rmw() 189 static void mtk_dma_set(struct mtk_cqdma_pchan *pc, u32 reg, u32 val) in mtk_dma_set() argument [all …]
|
| /linux/arch/csky/kernel/ |
| H A D | stacktrace.c | 19 unsigned long fp, sp, pc; in walk_stackframe() local 24 pc = instruction_pointer(regs); in walk_stackframe() 29 pc = (unsigned long)walk_stackframe; in walk_stackframe() 34 pc = thread_saved_lr(task); in walk_stackframe() 41 if (unlikely(!__kernel_text_address(pc) || fn(pc, arg))) in walk_stackframe() 53 pc = ftrace_graph_ret_addr(current, NULL, frame->ra, in walk_stackframe() 63 unsigned long sp, pc; in walk_stackframe() local 68 pc = instruction_pointer(regs); in walk_stackframe() 71 pc = (unsigned long)walk_stackframe; in walk_stackframe() 75 pc = thread_saved_lr(task); in walk_stackframe() [all …]
|
| /linux/arch/riscv/kernel/ |
| H A D | stacktrace.c | 51 unsigned long fp, sp, pc; in walk_stackframe() local 58 pc = instruction_pointer(regs); in walk_stackframe() 62 pc = (unsigned long)walk_stackframe; in walk_stackframe() 68 pc = task->thread.ra; in walk_stackframe() 74 if (unlikely(!__kernel_text_address(pc) || (level++ >= 0 && !fn(arg, pc)))) in walk_stackframe() 83 if (regs && (regs->epc == pc) && fp_is_valid(frame->ra, sp)) { in walk_stackframe() 86 pc = regs->ra; in walk_stackframe() 89 pc = READ_ONCE_TASK_STACK(task, frame->ra); in walk_stackframe() 90 pc = ftrace_graph_ret_addr(current, &graph_idx, pc, in walk_stackframe() 92 if (pc >= (unsigned long)handle_exception && in walk_stackframe() [all …]
|
| /linux/arch/xtensa/kernel/ |
| H A D | stacktrace.c | 36 unsigned long pc = regs->pc; in xtensa_backtrace_user() local 43 frame.pc = pc; in xtensa_backtrace_user() 46 if (pc == 0 || pc >= TASK_SIZE || ufn(&frame, data)) in xtensa_backtrace_user() 74 pc = MAKE_PC_FROM_RA(a0, pc); in xtensa_backtrace_user() 81 frame.pc = pc; in xtensa_backtrace_user() 84 if (pc == 0 || pc >= TASK_SIZE || ufn(&frame, data)) in xtensa_backtrace_user() 98 pc = MAKE_PC_FROM_RA(a0, pc); in xtensa_backtrace_user() 108 frame.pc = pc; in xtensa_backtrace_user() 111 if (pc == 0 || pc >= TASK_SIZE || ufn(&frame, data)) in xtensa_backtrace_user() 122 unsigned long pc = regs->depc > VALID_DOUBLE_EXCEPTION_ADDRESS ? in xtensa_backtrace_kernel() local [all …]
|
| /linux/arch/loongarch/kernel/ |
| H A D | ftrace_dyn.c | 15 static int ftrace_modify_code(unsigned long pc, u32 old, u32 new, bool validate) in ftrace_modify_code() argument 20 if (larch_insn_read((void *)pc, &replaced)) in ftrace_modify_code() 27 if (larch_insn_patch_text((void *)pc, new)) in ftrace_modify_code() 34 static bool reachable_by_bl(unsigned long addr, unsigned long pc) in reachable_by_bl() argument 36 long offset = (long)addr - (long)pc; in reachable_by_bl() 65 unsigned long pc = rec->ip + LOONGARCH_INSN_SIZE; in ftrace_find_callable_addr() local 73 if (*addr != FTRACE_ADDR && *addr != FTRACE_REGS_ADDR && !reachable_by_bl(*addr, pc)) in ftrace_find_callable_addr() 80 if (reachable_by_bl(*addr, pc)) in ftrace_find_callable_addr() 94 mod = __module_text_address(pc); in ftrace_find_callable_addr() 120 unsigned long pc; in ftrace_modify_call() local [all …]
|
| H A D | unwind_prologue.c | 66 static inline bool fix_exception(unsigned long pc) in fix_exception() argument 74 if (scan_handlers(pc - pcpu_handlers[cpu])) in fix_exception() 78 return scan_handlers(pc - eentry); in fix_exception() 85 static inline bool fix_ftrace(unsigned long pc) in fix_ftrace() argument 88 return pc == (unsigned long)ftrace_call + LOONGARCH_INSN_SIZE; in fix_ftrace() 96 if (!fix_exception(state->pc) && !fix_ftrace(state->pc)) in unwind_state_fixup() 115 unsigned long size, offset, pc; in unwind_by_prologue() local 127 state->pc = regs->csr_era; in unwind_by_prologue() 137 pc = state->pc - (state->first ? 0 : LOONGARCH_INSN_SIZE); in unwind_by_prologue() 138 if (!kallsyms_lookup_size_offset(pc, &size, &offset)) in unwind_by_prologue() [all …]
|