arch.h (5c68005083d620b1499fc81926a514d39ae8b88c) | arch.h (659ee30f33b1cbafcc364cffc24db0fe31f26ed5) |
---|---|
1/* SPDX-License-Identifier: LGPL-2.1 OR MIT */ 2/* 3 * Copyright (C) 2017-2022 Willy Tarreau <w@1wt.eu> 4 */ 5 6/* Below comes the architecture-specific code. For each architecture, we have 7 * the syscall declarations and the _start code definition. This is the only 8 * global part. On all architectures the kernel puts everything in the stack 9 * before jumping to _start just above us, without any return address (_start | 1/* SPDX-License-Identifier: LGPL-2.1 OR MIT */ 2/* 3 * Copyright (C) 2017-2022 Willy Tarreau <w@1wt.eu> 4 */ 5 6/* Below comes the architecture-specific code. For each architecture, we have 7 * the syscall declarations and the _start code definition. This is the only 8 * global part. On all architectures the kernel puts everything in the stack 9 * before jumping to _start just above us, without any return address (_start |
10 * is not a function but an entry pint). So at the stack pointer we find argc. | 10 * is not a function but an entry point). So at the stack pointer we find argc. |
11 * Then argv[] begins, and ends at the first NULL. Then we have envp which 12 * starts and ends with a NULL as well. So envp=argv+argc+1. 13 */ 14 15#ifndef _NOLIBC_ARCH_H 16#define _NOLIBC_ARCH_H 17 18#if defined(__x86_64__) --- 18 unchanged lines hidden --- | 11 * Then argv[] begins, and ends at the first NULL. Then we have envp which 12 * starts and ends with a NULL as well. So envp=argv+argc+1. 13 */ 14 15#ifndef _NOLIBC_ARCH_H 16#define _NOLIBC_ARCH_H 17 18#if defined(__x86_64__) --- 18 unchanged lines hidden --- |