Refactor SystemStack function for arm targets.
Removing usage of AsmFull in favor of writing inline assembly in C.
Этот коммит содержится в:
		
							родитель
							
								
									360f6904f5
								
							
						
					
					
						коммит
						a3fdbec13d
					
				
					 2 изменённых файлов: 16 добавлений и 4 удалений
				
			
		
							
								
								
									
										12
									
								
								src/internal/task/task_stack_cortexm.c
									
										
									
									
									
										Обычный файл
									
								
							
							
						
						
									
										12
									
								
								src/internal/task/task_stack_cortexm.c
									
										
									
									
									
										Обычный файл
									
								
							| 
						 | 
					@ -0,0 +1,12 @@
 | 
				
			||||||
 | 
					#include <stdint.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					uintptr_t SystemStack() {
 | 
				
			||||||
 | 
					    uintptr_t sp;
 | 
				
			||||||
 | 
					    asm volatile(
 | 
				
			||||||
 | 
					        "mrs %0, MSP"
 | 
				
			||||||
 | 
					        : "=r"(sp)
 | 
				
			||||||
 | 
					        :
 | 
				
			||||||
 | 
					        : "memory"
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					    return sp;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -8,8 +8,8 @@ package task
 | 
				
			||||||
// PSP, which is used for goroutines) so that goroutines do not need extra stack
 | 
					// PSP, which is used for goroutines) so that goroutines do not need extra stack
 | 
				
			||||||
// space for interrupts.
 | 
					// space for interrupts.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import "C"
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"device/arm"
 | 
					 | 
				
			||||||
	"unsafe"
 | 
						"unsafe"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -67,6 +67,6 @@ func (s *state) pause() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// SystemStack returns the system stack pointer. On Cortex-M, it is always
 | 
					// SystemStack returns the system stack pointer. On Cortex-M, it is always
 | 
				
			||||||
// available.
 | 
					// available.
 | 
				
			||||||
func SystemStack() uintptr {
 | 
					//
 | 
				
			||||||
	return arm.AsmFull("mrs {}, MSP", nil)
 | 
					//export SystemStack
 | 
				
			||||||
}
 | 
					func SystemStack() uintptr
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Загрузка…
	
	Создание таблицы
		
		Сослаться в новой задаче