History log of /optee_os/core/ (Results 6276 – 6300 of 6498)
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
a38d95ce17-Apr-2015 Jerome Forissier <jerome.forissier@linaro.org>

Remove CFG_WITH_SEC_MON

CFG_WITH_SEC_MON = !CFG_WITH_ARM_TRUSTED_FW

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Reviewed-by

Remove CFG_WITH_SEC_MON

CFG_WITH_SEC_MON = !CFG_WITH_ARM_TRUSTED_FW

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Reviewed-by: Pascal Brand <pascal.brand@linaro.org>

show more ...

5daf0bbc20-Apr-2015 Jerome Forissier <jerome.forissier@linaro.org>

plat-vexpress/entry_a32.S: fix wrong name in END_FUNC macro

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Reviewed-by: Pascal

plat-vexpress/entry_a32.S: fix wrong name in END_FUNC macro

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Reviewed-by: Pascal Brand <pascal.brand@linaro.org>

show more ...

80d65d2720-Apr-2015 Pascal Brand <pascal.brand@st.com>

Define TAMSG / TAMSG_RAW when CFG_TEE_CORE_TA_TRACE is undefined

Reviewed-by: Joakim Bech <joakim.bech@linaro.org>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Tested-by: Pascal Brand <pa

Define TAMSG / TAMSG_RAW when CFG_TEE_CORE_TA_TRACE is undefined

Reviewed-by: Joakim Bech <joakim.bech@linaro.org>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Tested-by: Pascal Brand <pascal.brand@linaro.org> (STM platform)
Signed-off-by: Pascal Brand <pascal.brand@st.com>

show more ...

dbd392c920-Apr-2015 Pascal Brand <pascal.brand@st.com>

Adding noreturn in _assert_break() definition

Reviewed-by: Joakim Bech <joakim.bech@linaro.org>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Signed-off-by: Pascal Brand <pascal.brand@st.c

Adding noreturn in _assert_break() definition

Reviewed-by: Joakim Bech <joakim.bech@linaro.org>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Signed-off-by: Pascal Brand <pascal.brand@st.com>

show more ...

fcca3b1b20-Apr-2015 Pascal Brand <pascal.brand@st.com>

Cleanup: comments and unused function

Reviewed-by: Joakim Bech <joakim.bech@linaro.org>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Signed-off-by: Pascal Brand <pascal.brand@st.com>

e0a3ffe420-Apr-2015 Pascal Brand <pascal.brand@st.com>

plat-stm: Use exception helper

Reviewed-by: Joakim Bech <joakim.bech@linaro.org>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Signed-off-by: Pascal Brand <pascal.brand@st.com>

c61c04b820-Apr-2015 Pascal Brand <pascal.brand@st.com>

Fix potential memory leak in DH

Reviewed-by: Joakim Bech <joakim.bech@linaro.org>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Signed-off-by: Pascal Brand <pascal.brand@st.com>

3354f9b215-Apr-2015 Jerome Forissier <jerome.forissier@linaro.org>

mk/checkconf.mk: update generation of conf.mk

Make generation of conf.mk more consistent with what we do for conf.h,
that is:
- conf.mk shall not be touched if its content does not change,
- write "

mk/checkconf.mk: update generation of conf.mk

Make generation of conf.mk more consistent with what we do for conf.h,
that is:
- conf.mk shall not be touched if its content does not change,
- write "CHK" when checking the file, then "UPD" only if it needs
updating.

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Reviewed-by: Pascal Brand <pascal.brand@linaro.org>

show more ...

0670725103-Apr-2015 etienne carriere <etienne.carriere@st.com>

Check invalid thread id

Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Reviewed-by: Joakim Bech <joakim.bech@linaro.org>
Reviewed-by: Etienne CARRIERE <etienne.carriere@st.com>
Tested-by: E

Check invalid thread id

Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Reviewed-by: Joakim Bech <joakim.bech@linaro.org>
Reviewed-by: Etienne CARRIERE <etienne.carriere@st.com>
Tested-by: Etienne CARRIERE <etienne.carriere@st.com>
Reviewed-by: Pascal BRAND <pascal.brand@st.com>
Signed-off-by: Pascal Brand <pascal.brand@st.com>

show more ...

1f7edb9830-Mar-2015 etienne carriere <etienne.carriere@st.com>

core: remove deprecated TA context field 'smem_size'

Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Reviewed-by: Joakim Bech <joakim.bech@linaro.org>
Reviewed-by: Etienne CARRIERE <etienne.

core: remove deprecated TA context field 'smem_size'

Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Reviewed-by: Joakim Bech <joakim.bech@linaro.org>
Reviewed-by: Etienne CARRIERE <etienne.carriere@st.com>
Tested-by: Etienne CARRIERE <etienne.carriere@st.com>
Reviewed-by: Pascal BRAND <pascal.brand@st.com>
Signed-off-by: Pascal Brand <pascal.brand@st.com>

show more ...

7583c59e27-Mar-2015 Cedric Chaumont <cedric.chaumont@st.com>

GP Internal Core API v1.1 : add new functions, panicked IDs

- Add new functions (that will replace deprecated functions)
TEE_GetObjectInfo1, TEE_RestrictObjectUsage1,
TEE_CopyObjectAttributes1, TEE_

GP Internal Core API v1.1 : add new functions, panicked IDs

- Add new functions (that will replace deprecated functions)
TEE_GetObjectInfo1, TEE_RestrictObjectUsage1,
TEE_CopyObjectAttributes1, TEE_CloseAndDeletePersistentObject1

- Support of deprecated functions available (will be removed in future release).
Note: TEE_ERROR_STORAGE_NOT_AVAILABLE case not implemented in OP-TEE core
(e.g. media removal)

- Add panicked functions identifiers (debug purpose)

Signed-off-by: Cedric Chaumont <cedric.chaumont@st.com>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Tested-by: Cedric Chaumont <cedric.chaumont@linaro.org> (STM boards)
Tested-by: Cedric Chaumont <cedric.chaumont@linaro.org> (ARM Juno board)

show more ...

ef0c57f013-Apr-2015 Jens Wiklander <jens.wiklander@linaro.org>

core: bugfix thread_set_exceptions()

Fixes problem that thread_set_exceptions() wouldn't clear an already
present exception bit.

Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
Tested-by:

core: bugfix thread_set_exceptions()

Fixes problem that thread_set_exceptions() wouldn't clear an already
present exception bit.

Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
Tested-by: Jens Wiklander <jens.wiklander@linaro.org> (QEMU)
Reviewed-by: Pascal Brand <pascal.brand@linaro.org>
Tested-by: Pascal Brand <pascal.brand@linaro.org> (STM platform)

show more ...

cbc3282625-Mar-2015 Jens Wiklander <jens.wiklander@linaro.org>

core: bugfix set error origin on bad session id

Sets error origin to TEE_ORIGIN_TEE when session id fails verification.

Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
Reviewed-by: Pascal

core: bugfix set error origin on bad session id

Sets error origin to TEE_ORIGIN_TEE when session id fails verification.

Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
Reviewed-by: Pascal Brand <pascal.brand@linaro.org>

show more ...

c9b9148913-Mar-2015 Pascal Brand <pascal.brand@st.com>

Fix RSA key pair generation when public exponent is provided

Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Tested-by: Pascal Bra

Fix RSA key pair generation when public exponent is provided

Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Tested-by: Pascal Brand <pascal.brand@linaro.org> (STM platform)
Signed-off-by: Pascal Brand <pascal.brand@st.com>

show more ...

abe3897409-Mar-2015 Jens Wiklander <jens.wiklander@linaro.org>

Rename arm32 architecture to arm

Renames arm32 directories to arm.

Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
Tested-by: Jens Wiklander <jens.wiklander@linaro.org> (QEMU)
Reviewed-by

Rename arm32 architecture to arm

Renames arm32 directories to arm.

Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
Tested-by: Jens Wiklander <jens.wiklander@linaro.org> (QEMU)
Reviewed-by: Pascal Brand <pascal.brand@linaro.org>
Tested-by: Pascal Brand <pascal.brand@linaro.org> (QEMU platform)

show more ...


/optee_os/Makefile
arch/arm/arm.mk
arch/arm/include/arm.h
arch/arm/include/arm32.h
arch/arm/include/arm32_macros.S
arch/arm/include/kernel/kta_types.h
arch/arm/include/kernel/misc.h
arch/arm/include/kernel/mutex.h
arch/arm/include/kernel/tee_l2cc_mutex.h
arch/arm/include/kernel/thread.h
arch/arm/include/kernel/thread_defs.h
arch/arm/include/kernel/time_source.h
arch/arm/include/kernel/tz_proc.h
arch/arm/include/kernel/tz_proc_def.h
arch/arm/include/kernel/tz_ssvce.h
arch/arm/include/kernel/tz_ssvce_def.h
arch/arm/include/kernel/tz_ssvce_pl310.h
arch/arm/include/kernel/vfp.h
arch/arm/include/mm/core_memprot.h
arch/arm/include/mm/core_mmu.h
arch/arm/include/mm/tee_mm_def.h
arch/arm/include/mm/tee_mmu_defs.h
arch/arm/include/mm/tee_pager.h
arch/arm/include/sm/sm.h
arch/arm/include/sm/sm_defs.h
arch/arm/include/sm/tee_mon.h
arch/arm/include/sm/teesmc.h
arch/arm/include/sm/teesmc_optee.h
arch/arm/include/sm/teesmc_opteed.h
arch/arm/include/sm/teesmc_opteed_macros.h
arch/arm/include/tee/arch_svc.h
arch/arm/include/tee/entry.h
arch/arm/kernel/misc_a32.S
arch/arm/kernel/mutex.c
arch/arm/kernel/proc_a32.S
arch/arm/kernel/ssvce_a32.S
arch/arm/kernel/sub.mk
arch/arm/kernel/tee_l2cc_mutex.c
arch/arm/kernel/tee_ta_manager.c
arch/arm/kernel/tee_time.c
arch/arm/kernel/tee_time_arm_cntpct.c
arch/arm/kernel/tee_time_ree.c
arch/arm/kernel/tee_time_rtt.c
arch/arm/kernel/tee_time_unpg.c
arch/arm/kernel/thread.c
arch/arm/kernel/thread_a32.S
arch/arm/kernel/thread_private.h
arch/arm/kernel/trace_ext.c
arch/arm/kernel/tz_ssvce_pl310_a32.S
arch/arm/kernel/vfp.c
arch/arm/kernel/vfp_a32.S
arch/arm/kernel/vfp_private.h
arch/arm/mm/core_mmu.c
arch/arm/mm/core_mmu_lpae.c
arch/arm/mm/core_mmu_private.h
arch/arm/mm/core_mmu_v7.c
arch/arm/mm/sub.mk
arch/arm/mm/tee_mm.c
arch/arm/mm/tee_mm_unpg.c
arch/arm/mm/tee_mmu.c
arch/arm/mm/tee_pager.c
arch/arm/plat-stm/.gitignore
arch/arm/plat-stm/asc.S
arch/arm/plat-stm/asc.h
arch/arm/plat-stm/cache_maintenance.c
arch/arm/plat-stm/conf.mk
arch/arm/plat-stm/core_bootcfg.c
arch/arm/plat-stm/core_chip_cannes.c
arch/arm/plat-stm/core_chip_orly2.c
arch/arm/plat-stm/link.mk
arch/arm/plat-stm/main.c
arch/arm/plat-stm/platform_config.h
arch/arm/plat-stm/platform_flags.mk
arch/arm/plat-stm/rng_support.c
arch/arm/plat-stm/sub.mk
arch/arm/plat-stm/system_config.in
arch/arm/plat-stm/tee_common_otp.c
arch/arm/plat-stm/tz-template.lds
arch/arm/plat-stm/tz_a9init.S
arch/arm/plat-stm/tz_sinit.S
arch/arm/plat-sunxi/conf.mk
arch/arm/plat-sunxi/console.c
arch/arm/plat-sunxi/core_bootcfg.c
arch/arm/plat-sunxi/core_chip.c
arch/arm/plat-sunxi/entry.S
arch/arm/plat-sunxi/head.c
arch/arm/plat-sunxi/kern.ld.S
arch/arm/plat-sunxi/link.mk
arch/arm/plat-sunxi/main.c
arch/arm/plat-sunxi/platform.c
arch/arm/plat-sunxi/platform.h
arch/arm/plat-sunxi/platform_config.h
arch/arm/plat-sunxi/platform_flags.mk
arch/arm/plat-sunxi/rng_support.c
arch/arm/plat-sunxi/smp_boot.S
arch/arm/plat-sunxi/smp_fixup.S
arch/arm/plat-sunxi/sub.mk
arch/arm/plat-sunxi/tee_common_otp.c
arch/arm/plat-vexpress/conf.mk
arch/arm/plat-vexpress/core_bootcfg.c
arch/arm/plat-vexpress/core_chip.c
arch/arm/plat-vexpress/entry_a32.S
arch/arm/plat-vexpress/juno_core_pos_a32.S
arch/arm/plat-vexpress/kern.ld.S
arch/arm/plat-vexpress/link.mk
arch/arm/plat-vexpress/main.c
arch/arm/plat-vexpress/plat_tee_func.c
arch/arm/plat-vexpress/plat_tee_func.h
arch/arm/plat-vexpress/platform_config.h
arch/arm/plat-vexpress/platform_flags.mk
arch/arm/plat-vexpress/pm_debug.h
arch/arm/plat-vexpress/sub.mk
arch/arm/plat-vexpress/tee_common_otp.c
arch/arm/sm/sm.c
arch/arm/sm/sm_a32.S
arch/arm/sm/sm_private.h
arch/arm/sm/sub.mk
arch/arm/sta/core_self_tests.c
arch/arm/sta/core_self_tests.h
arch/arm/sta/se_api_self_tests.c
arch/arm/sta/sta_self_tests.c
arch/arm/sta/sub.mk
arch/arm/tee/arch_svc.c
arch/arm/tee/arch_svc_a32.S
arch/arm/tee/arch_svc_private.h
arch/arm/tee/arch_tee_fs.c
arch/arm/tee/entry.c
arch/arm/tee/init.c
arch/arm/tee/sub.mk
arch/arm/tee/tee_rpmb.c
lib/libtomcrypt/src/hashes/sha1_arm32_ce_a32.S
lib/libtomcrypt/src/hashes/sha2/sha256_arm32_ce_a32.S
lib/libtomcrypt/src/hashes/sha2/sub.mk
lib/libtomcrypt/src/hashes/sub.mk
/optee_os/documentation/build_system.md
/optee_os/documentation/crypto.md
/optee_os/documentation/file_structure.md
/optee_os/documentation/optee_design.md
/optee_os/lib/libmpa/arch/arm/mpa_a32.S
/optee_os/lib/libmpa/arch/arm/sub.mk
/optee_os/lib/libmpa/sub.mk
/optee_os/lib/libutee/arch/arm/sub.mk
/optee_os/lib/libutee/arch/arm/user_ta_entry.c
/optee_os/lib/libutee/arch/arm/utee_misc.c
/optee_os/lib/libutee/arch/arm/utee_syscalls_asm.S
/optee_os/lib/libutils/isoc/arch/arm/arm32_aeabi_divmod.c
/optee_os/lib/libutils/isoc/arch/arm/arm32_aeabi_divmod_a32.S
/optee_os/lib/libutils/isoc/arch/arm/arm32_aeabi_ldivmod.c
/optee_os/lib/libutils/isoc/arch/arm/arm32_aeabi_ldivmod_a32.S
/optee_os/lib/libutils/isoc/arch/arm/sub.mk
/optee_os/lib/libutils/isoc/sub.mk
/optee_os/scripts/setup_fvp_optee.sh
/optee_os/scripts/setup_qemu_optee.sh
/optee_os/ta/arch/arm/arm.mk
/optee_os/ta/arch/arm/fix_ta_binary
/optee_os/ta/arch/arm/link.mk
/optee_os/ta/arch/arm/user_ta_elf_arm.lds
/optee_os/ta/arch/arm/user_ta_header.c
20c7472e23-Mar-2015 etienne carriere <etienne.carriere@st.com>

core/arm32: fix TA cache services

Reviewed-by: Pascal BRAND <pascal.brand@st.com>
Tested-by: Etienne CARRIERE <etienne.carriere@st.com>
Reviewed-by: Etienne CARRIERE <etienne.carriere@st.com>
Signed

core/arm32: fix TA cache services

Reviewed-by: Pascal BRAND <pascal.brand@st.com>
Tested-by: Etienne CARRIERE <etienne.carriere@st.com>
Reviewed-by: Etienne CARRIERE <etienne.carriere@st.com>
Signed-off-by: Pascal Brand <pascal.brand@st.com>

show more ...

e491318a04-Feb-2015 Jens Wiklander <jens.wiklander@linaro.org>

arm32: separate ARM32 specific

* ARM32 specific C code is broken out and surrounded by #ifdef ARM32
* Some small architectural changes in thread and abort handling to
prepare for Aarch64

Signed-o

arm32: separate ARM32 specific

* ARM32 specific C code is broken out and surrounded by #ifdef ARM32
* Some small architectural changes in thread and abort handling to
prepare for Aarch64

Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
Tested-by: Jens Wiklander <jens.wiklander@linaro.org> (QEMU, FVP)
Reviewed-by: Pascal Brand <pascal.brand@linaro.org>
Tested-by: Pascal Brand <pascal.brand@linaro.org> (STM platform)

show more ...

61ea19fd19-Mar-2015 Jens Wiklander <jens.wiklander@linaro.org>

arm32: update types to be 64bit ready

Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
Reviewed-by: Pascal Brand <pascal.brand@linaro.org>

98e62d7c19-Mar-2015 Jens Wiklander <jens.wiklander@linaro.org>

arm32: rename LOCK and UNLOCK

Renames defines LOCK and UNLOCK to SPINLOCK_LOCK and SPINLOCK_UNLOCK
respectively. The definitions are also moved to tz_proc.h.

Signed-off-by: Jens Wiklander <jens.wik

arm32: rename LOCK and UNLOCK

Renames defines LOCK and UNLOCK to SPINLOCK_LOCK and SPINLOCK_UNLOCK
respectively. The definitions are also moved to tz_proc.h.

Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
Reviewed-by: Pascal Brand <pascal.brand@linaro.org>

show more ...

851aa85819-Mar-2015 Jens Wiklander <jens.wiklander@linaro.org>

Fix some 64bit printf warnings

Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
Reviewed-by: Pascal Brand <pascal.brand@linaro.org>

0d711d8219-Mar-2015 Jens Wiklander <jens.wiklander@linaro.org>

arm32: dynamic user va range

core_mmu_get_user_va_range() selects user va range. No change in user TA
va address when configured with V7 MMU tables.

When configured with LPAE only use TTBR0. The to

arm32: dynamic user va range

core_mmu_get_user_va_range() selects user va range. No change in user TA
va address when configured with V7 MMU tables.

When configured with LPAE only use TTBR0. The top L0 table is CPU
specific with all entries common except one which is used when mapping
user TAs. User TA va range is dependent on the first unused L0 entry.

Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
Tested-by: Jens Wiklander <jens.wiklander@linaro.org> (QEMU, FVP)
Reviewed-by: Pascal Brand <pascal.brand@linaro.org>
Tested-by: Pascal Brand <pascal.brand@linaro.org> (STM platform)

show more ...

7f74c64a01-Apr-2015 Pascal Brand <pascal.brand@st.com>

Update ABI-32bits and v1.1 uint32_t changes

Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Tested-by: Pascal Brand <pascal.brand@linaro.org> (STM platform)
Signed-off-by: Pascal Brand <pasc

Update ABI-32bits and v1.1 uint32_t changes

Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Tested-by: Pascal Brand <pascal.brand@linaro.org> (STM platform)
Signed-off-by: Pascal Brand <pascal.brand@st.com>

show more ...

ae38eb1f19-Mar-2015 Jens Wiklander <jens.wiklander@linaro.org>

arm32: manage stack unwinding in thread module

Renames tee_svc_enter_user_mode() and tee_svc_unwind_enter_user_mode() to
thread_enter_user_mode() and thread_unwind_user_mode() respectively. The
func

arm32: manage stack unwinding in thread module

Renames tee_svc_enter_user_mode() and tee_svc_unwind_enter_user_mode() to
thread_enter_user_mode() and thread_unwind_user_mode() respectively. The
functions are also moved from the tee/arch_svc* group to kernel/thread*.

Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
Tested-by: Jens Wiklander <jens.wiklander@linaro.org> (QEMU)
Reviewed-by: Pascal Brand <pascal.brand@linaro.org>

show more ...

1f60363a19-Mar-2015 Jens Wiklander <jens.wiklander@linaro.org>

select base types based on ILP32 and LP64 defines

* Selects base types base on the __ILP32__ and __LP64__ defines
* Fixes warnings from change of base types

Signed-off-by: Jens Wiklander <jens.wikl

select base types based on ILP32 and LP64 defines

* Selects base types base on the __ILP32__ and __LP64__ defines
* Fixes warnings from change of base types

Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
Tested-by: Jens Wiklander <jens.wiklander@linaro.org> (QEMU)
Reviewed-by: Pascal Brand <pascal.brand@linaro.org>

show more ...

5c550d5919-Mar-2015 Jens Wiklander <jens.wiklander@linaro.org>

thread_check_canaries: expand assert macro

Expands the ASSERT_STACK_CANARIES in thread_check_canaries() to
make it easier to see which in stack the canary is corrupted.

Signed-off-by: Jens Wiklande

thread_check_canaries: expand assert macro

Expands the ASSERT_STACK_CANARIES in thread_check_canaries() to
make it easier to see which in stack the canary is corrupted.

Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
Reviewed-by: Pascal Brand <pascal.brand@linaro.org>

show more ...

1...<<251252253254255256257258259260