Skip to main content
  • Home
  • Development
  • Documentation
  • Donate
  • Operational login
  • Browse the archive

swh logo
SoftwareHeritage
Software
Heritage
Archive
Features
  • Search

  • Downloads

  • Save code now

  • Add forge now

  • Help

  • 61acfe9
  • /
  • arch
  • /
  • arc
  • /
  • kernel
  • /
  • ctx_sw_asm.S
Raw File Download
Permalinks

To reference or cite the objects present in the Software Heritage archive, permalinks based on SoftWare Hash IDentifiers (SWHIDs) must be used.
Select below a type of object currently browsed in order to display its associated SWHID and permalink.

  • content
  • directory
content badge Iframe embedding
swh:1:cnt:7c1f365ef3d20efe644635c07f9a22451190884c
directory badge Iframe embedding
swh:1:dir:53dc487de6e820eb3cbd2687198a8f15fb8ba574
Citations

This interface enables to generate software citations, provided that the root directory of browsed objects contains a citation.cff or codemeta.json file.
Select below a type of object currently browsed in order to generate citations for them.

  • content
  • directory
Generate software citation in BibTex format (requires biblatex-software package)
Generating citation ...
Generate software citation in BibTex format (requires biblatex-software package)
Generating citation ...
ctx_sw_asm.S
/*
 * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 *
 * Vineetg: Aug 2009
 *  -Moved core context switch macro out of entry.S into this file.
 *  -This is the more "natural" hand written assembler
 */

#include <linux/linkage.h>
#include <asm/entry.h>       /* For the SAVE_* macros */
#include <asm/asm-offsets.h>

#define KSP_WORD_OFF 	((TASK_THREAD + THREAD_KSP) / 4)

;################### Low Level Context Switch ##########################

	.section .sched.text,"ax",@progbits
	.align 4
	.global __switch_to
	.type   __switch_to, @function
__switch_to:
	CFI_STARTPROC

	/* Save regs on kernel mode stack of task */
	st.a    blink, [sp, -4]
	st.a    fp, [sp, -4]
	SAVE_CALLEE_SAVED_KERNEL

	/* Save the now KSP in task->thread.ksp */
#if KSP_WORD_OFF  <= 255
	st.as  sp, [r0, KSP_WORD_OFF]
#else
	/* Workaround for NR_CPUS=4k as ST.as can only take s9 offset */
	add2	r24, r0, KSP_WORD_OFF
	st	sp, [r24]
#endif
	/*
	* Return last task in r0 (return reg)
	* On ARC, Return reg = First Arg reg = r0.
	* Since we already have last task in r0,
	* don't need to do anything special to return it
	*/

	/*
	 * switch to new task, contained in r1
	 * Temp reg r3 is required to get the ptr to store val
	 */
	SET_CURR_TASK_ON_CPU  r1, r3

	/* reload SP with kernel mode stack pointer in task->thread.ksp */
	ld.as  sp, [r1, (TASK_THREAD + THREAD_KSP)/4]

	/* restore the registers */
	RESTORE_CALLEE_SAVED_KERNEL
	ld.ab   fp, [sp, 4]
	ld.ab   blink, [sp, 4]
	j       [blink]

END_CFI(__switch_to)

back to top

Software Heritage — Copyright (C) 2015–2025, The Software Heritage developers. License: GNU AGPLv3+.
The source code of Software Heritage itself is available on our development forge.
The source code files archived by Software Heritage are available under their own copyright and licenses.
Terms of use: Archive access, API— Contact— JavaScript license information— Web API